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

Opening a named mutex by fully a qualified path

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

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

但是,函数 returns NULL 失败并出现错误 161(ERROR_BAD_PATHNAME:指定的路径无效)。是的,文档对 \Global\Local 前缀说得很好,但没有说明这些完整的对象名称。但是,MSDN 并未声明 [​​=25=] everything!

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

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

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

"Session\1\SmartScreen_AppRepSettings_Mutex"

documentation表示Session\前缀是"reserved for system"使用。买者自负。