是否可以使用OpenMutex通过其完整路径限定打开或查询命名互斥锁?例如:
HANDLE hHandleMutex = OpenMutex(READ_CONTROL, FALSE,
"\\Sessions\\1\\BaseNamedObjects\\SmartScreen_AppRepSettings_Mutex");
但是,该函数返回NULL并失败,错误161(ERROR_BAD_PATHNAME
:指定的路径无效)。是的,文档很好地说明了\\Global
和\\Local
前缀,并没有说明这些完整对象名称的任何内容。但是,MSDN并未声明所有内容!
我知道我们可以使用NtQuerySystemInformation
,NtQueryObject
未记录的API查询相同内容。但这涉及到打开过程,复制令牌等。我可以很好地使用这些API,但需要一个简单的解决方案。
我们假设该进程作为SYSTEM帐户运行,因此错误5(访问被拒绝)不会成为问题。如果这是问题,我可以处理它。
答案 0 :(得分:3)
您使用的是错误的路径。它应该是:
"Session\\1\\SmartScreen_AppRepSettings_Mutex"
documentation表示Session\
前缀为"保留给系统"使用。注意事项。