如何允许 SYNCHRONIZE 访问所有进程的权限

Posted

技术标签:

【中文标题】如何允许 SYNCHRONIZE 访问所有进程的权限【英文标题】:How to allow SYNCHRONIZE access right to all processes 【发布时间】:2014-07-30 21:31:45 【问题描述】:

我有一个 Windows 服务,我希望其他进程(不同用户的,一些低权限的)等待它的句柄。意思是,windows服务进程HANDLE上的其他进程WaitForSingleObject()。

为了让其他进程能够等待服务进程,他们需要 OpenProcess() 并具有 SYNCHRONIZE 访问权限,但是我如何确定其他具有较低权限的进程可以获得 SYNCHRONIZE 访问权限???

我可以强制我的进程(Windows 服务)允许所有人同步吗?

【问题讨论】:

您可以使用 SetSecurityInfo 和相关函数来更改进程的 DACL。 @HarryJohnston 嘿,感谢您的帮助!这就是我想要做的,将 SetSecurityInfo 与“DACL_SECURITY_INFORMATION”和 NULL DACL(仅用于测试)一起使用,我仍然会从一个非常有限的过程中获得 ACCESS DENIED。 【参考方案1】:

我是这样解决的。

使用 SetSecurityInfo 不起作用,因为用户本身没有访问 SYSTEM 进程的权限。

以下知识库:http://support.microsoft.com/kb/131065 解释了如何向用户添加 SE_DEBUG_NAME 权限,使用户能够打开任何进程。

【讨论】:

链接指向页面404...

以上是关于如何允许 SYNCHRONIZE 访问所有进程的权限的主要内容,如果未能解决你的问题,请参考以下文章

详解 synchronize 锁的升级

什么是进程的互斥与同步?如何实现进程的互斥和同步

Linux学习之十四-Linux文件和目录权限

Linux 系统管理 01:文件权限管理

iOS NSUserDefaults synchronize存储遇到的坑

Java面试题01