1

背景:我有一个在后台工作的 Windows 服务(显然),并使用实用程序执行某个交互任务并通过命名管道将数据发送回服务。只要服务认为合适,实用程序就会运行,并且只存在几秒钟。

问题从 Vista 开始,程序无法再自由地打开命名管道进行写访问(请参阅Windows 服务强化)。

我计划通过创建具有安全属性的命名管道来解决该问题,以便在程序启动的上下文中授予当前登录用户的写访问权限,同时我想到一个问题:我可以允许访问那个命名的仅使用其(或其线程的)句柄传递给进程?

或者换一种说法:windows(Vista/7/later)的安全机制可以降到进程级别的粒度吗?

我是该领域的新手,有关安全性的文档让我很头疼,因此欢迎任何启发。

提前致谢。

4

1 回答 1

1

您无法通过进程 ID 保护对象(因为进程不是安全主体),但您可以GetNamedPipeClientProcessId在建立连接后使用,如果进程 ID 不是您喜欢的,则所有请求都失败。

于 2011-09-12T13:18:33.207 回答