完全通过限定路径打开命名互斥锁

时间:2017-06-13 10:45:50

标签: c windows winapi mutex

是否可以使用OpenMutex通过其完整路径限定打开或查询命名互斥锁?例如:

HANDLE hHandleMutex = OpenMutex(READ_CONTROL, FALSE, 
            "\\Sessions\\1\\BaseNamedObjects\\SmartScreen_AppRepSettings_Mutex");

但是,该函数返回NULL并失败,错误161(ERROR_BAD_PATHNAME:指定的路径无效)。是的,文档很好地说明了\\Global\\Local前缀,并没有说明这些完整对象名称的任何内容。但是,MSDN并未声明所有内容

我知道我们可以使用NtQuerySystemInformationNtQueryObject未记录的API查询相同内容。但这涉及到打开过程,复制令牌等。我可以很好地使用这些API,但需要一个简单的解决方案。

我们假设该进程作为SYSTEM帐户运行,因此错误5(访问被拒绝)不会成为问题。如果这是问题,我可以处理它。

1 个答案:

答案 0 :(得分:3)

您使用的是错误的路径。它应该是:

"Session\\1\\SmartScreen_AppRepSettings_Mutex"

documentation表示Session\前缀为"保留给系统"使用。注意事项。