从一开始,我就听说你永远都不要禁用 Windows 中的远程过程调用服务。这样做会导致过去难以逆转的可怕后果(我相信现在这不再容易做到,但现在更容易修复)。但是,我不知道它的作用是什么,也不知道它为什么对整个操作系统如此重要。
是否可以总结一下 RPC 服务的用途以及为什么这么多其他服务/应用程序/操作依赖它来运行?
答案1
Windows 的设计者决定让许多事物通过 RPC 相互通信 - 以便它们可以在本地或通过网络进行通信。
这包括 Active Directory、大多数 MMC 控制台、一些控制面板小程序(如设备管理器)的功能、管理工具中的许多内容以及可能的内部 Windows 组件。
我相信,即使您正在访问 MMC 控制台,例如compmgmt.msc
查看有关本地机器的信息,它基本上也是对本地主机的 RPC(但我可能是错的)。
可以将 RPC 视为 TCP/IP 之上的一个层级,它被许多 Windows 组件用作低级(且不安全)的联网通信框架。为什么不直接使用 TCP/IP?在设计 Windows NT 时(初始版本于 1993 年发布),除了 TCP/IP 之外,还有其他常用的网络协议,例如 Netware(SPX/IPX)、NetBIOS、AppleTalk(我认为 Windows 当时支持此功能,可能错了...)等。因此,这是一种与网络无关的方式,Windows 组件可以与本地计算机或远程计算机上的其他组件进行通信。
答案2
事实是:RPC 广泛应用于当地的机器,但对于主机到主机用法,主要由微软内部使用,第三方很少使用。
当地的RPC主要用途:
原始 RPC 组件,例如注册表、Netlogon、防火墙、服务控制、SQL Server……您可以在“HOST-to-HOST”部分的列表中看到其中一些。
许多 DCOM 组件(基于 RPC,像 C 的 C++ 包装器)包括 COM+ 组件。
您可以运行 dcomcnfg 来查看您的机器上有多少个 DCOM 组件:
Excel、Internet Explorer、Visual Studio...可以实现自动化,因为它们是 DCOM 组件:
甚至 Explorer 的文件属性对话框也是 DCOM 组件,好笑吗?如果您从 DCOMCNFG 的启动权限的“编辑限制”中删除所有 ACL,您将无法执行几乎任何操作,不仅管理工作正常!甚至无法在 Explorer 中显示文件属性!
主机到主机RPC主要用途:
您可以使用rpcdump或者ifids工具转储远程机器上的所有RPC接口,看到以下结果,您可以看到许多系统管理接口(当然它们也可以在本地使用):
[MS-RSP]: Remote Shutdown Protocol
[MS-TSCH]: Task Scheduler Service Remoting Protocol
[MS-TSCH]: Task Scheduler Service Remoting Protocol
[MS-TSCH]: Task Scheduler Service Remoting Protocol
[MS-EVEN6]: EventLog Remoting Protocol
Adh APIs
AppInfo
Base Firewall Engine API
DHCP Client LRPC Endpoint
DHCPv6 Client LRPC Endpoint
DfsDs service
EFSK RPC Interface
Event log TCPIP
Fw APIs
Group Policy RPC Interface
IP Transition Configuration endpoint
IdSegSrv service
Impl friendly name
KeyIso
LicenseManager
NRP server endpoint
NSI server endpoint
NetSetup API
Ngc Pop Key Service
Proxy Manager client server endpoint
Proxy Manager provider server endpoint
Secure Desktop LRPC interface
Security Center
UserMgrCli
WM_WindowManagerRPC\Server
WinHttp Auto-Proxy Service
Witness Client Test Interface
Witness Client Upcall Server
XactSrv service
...
Received 499 endpoints.
为什么RPC很重要?因为每一个成熟的系统都需要一个跨进程的通信机制,一个生成stub/proxy的工具集,一个打包/解包对象的标准。每个系统都有类似的东西。你一定知道Android,它的Binder和DCOM的设计很相似。
其实HOST-to-HOST RPC并没有普及,主要是因为复杂不透明,445、135端口经常被封,对互联网不友好,认证体验差。大家更喜欢选择HTTPS服务器来调用远程组件,更直接,可控性更强。
答案3
远程过程调用 (RPC)
来源:http://searchsoa.techtarget.com/definition/Remote-Procedure-Call远程过程调用 (RPC) 是一种协议,一个程序可以使用该协议向位于网络中另一台计算机的程序请求服务,而无需了解网络详细信息。(过程调用有时也称为函数调用或子例程调用。)RPC 使用客户端/服务器模型。请求程序是客户端,提供服务的程序是服务器。与常规或本地过程调用一样,RPC 是一种同步操作,要求暂停请求程序,直到返回远程过程的结果。但是,使用共享相同地址空间的轻量级进程或线程可以同时执行多个 RPC。
当使用 RPC 的程序语句被编译成可执行程序时,编译后的代码中会包含一个存根,作为远程过程代码的代表。当程序运行并发出过程调用时,存根会接收请求并将其转发到本地计算机中的客户端运行时程序。客户端运行时程序知道如何寻址远程计算机和服务器应用程序,并通过网络发送请求远程过程的消息。同样,服务器包含一个运行时程序和存根,它们与远程过程本身交互。结果以相同的方式返回。
有几种 RPC 模型和实现。一种流行的模型和实现是开放软件基金会的分布式计算环境 (DCE)。电气和电子工程师协会在其 ISO 远程过程调用规范 ISO/IEC CD 11578 N6561(ISO/IEC,1991 年 11 月)中定义了 RPC。
RPC 跨越网络通信开放系统互连 (OSI) 模型中的传输层和应用层。RPC 使开发包含分布在网络中的多个程序的应用程序变得更加容易。
客户端/服务器通信的替代方法包括消息队列和 IBM 的高级程序到程序通信 (APPC)。
以下是微软的更多信息:http://msdn.microsoft.com/en-us/library/windows/desktop/aa378651(v=vs.85).aspx
目的
Microsoft 远程过程调用 (RPC) 定义了一种用于创建分布式客户端/服务器程序的强大技术。RPC 运行时存根和库管理与网络协议和通信相关的大多数进程。这使您可以专注于应用程序的细节而不是网络的细节。
适用情况
RPC 可用于所有基于 Windows 操作系统的客户端/服务器应用程序。它还可用于为包括 Unix 和 Apple 等操作系统在内的异构网络环境创建客户端和服务器程序。
答案4
RPC 对您作为用户来说并不重要。它对 Windows 来说应该不是必不可少的。我们只能说,如果您没有什么可隐瞒的,您就不应该帮助那些有隐瞒的人。这些不是您要找的服务。这里没什么可看的,继续吧。