【问题标题】:How do I ensure only my program can access a named pipe?如何确保只有我的程序可以访问命名管道?
【发布时间】:2012-07-26 11:03:00
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net security named-pipes inter-process-communicat


    【解决方案1】:

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

    也就是说,您可以创建一个用户来运行您的客户端和服务器,并且只要您保证 那个 帐户的安全,就可以了(您可以使用该用户的安全描述符)。

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 1970-01-01
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 2017-04-12
      相关资源
      最近更新 更多