5

我计划将我的程序分成 2 个进程:第一个是 GUI,第二个是使用管理员帐户运行的后台进程。两者应该相互交流。

我正在考虑为此使用命名管道,但有一件事情困扰着我:

有没有办法确保只有我的程序才能访问命名管道?

4

2 回答 2

3

创建命名管道时,您通常可以使用安全描述符(在两侧)保护对它的访问。但是,安全描述符是针对用户的,而不是针对应用程序的(出于充分的理由,从安全的角度来看,您希望保护用户,而不是应用程序)。

也就是说,您可以创建一个用户,您的客户端和服务器在其下运行,只要您保持帐户的安全,就可以了(您可以使用该用户的安全描述符保护管道)。

因此,如果您的程序是唯一使用该用户身份的程序,那么从技术上讲,是的,管道只能由您的程序使用。但是,您必须管理帐户的安全性。

于 2012-07-27T18:30:45.500 回答
1

如果您只需要支持 Windows Vista 或更高版本,则可以调用 Windows API 在建立连接后找出管道另一端进程的 ProcessId 和/或 SessionID(例如 GetNamedPipeClientProcessId 和系列) . 您可以使用这些来实现显式检查,以确保只有您想通过管道进行通信的应用程序才能这样做。

于 2012-07-29T16:17:58.340 回答