About Mutex object in Vista
我的操作系统是启用了UAC的Vista,我在服务器端创建了一个全局Mutex对象,然后我的UI用户界面想要使用具有相同名称的CreateMutex来获取已在服务器中创建的Mutex对象,但是该功能告诉我我 没有访问权限。 我该怎么做?
我认为在您的情况下,您需要通过初始化相应的安全属性来明确允许对互斥锁的全部访问。
尝试以这种方式创建互斥锁(将其视为半伪代码):
1 2 3 4 5 6 7 | SECURITY_ATTRIBUTES sa; SECURITY_DESCRIPTOR sd; InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION); SetSecurityDescriptorDacl(&sd, TRUE, NULL, FALSE); sa.nLength = sizeof(sa); sa.lpSecurityDescriptor = &sd; CreateMutex(&sa, ...); |
顺便说一句-使用CreateMutex打开现有的互斥锁是可以的。 但是,OpenMutex允许您指定所需的访问级别。
另请注意,如果您需要真正的全局互斥体-您必须在其名称前加上"全局"前缀(请参阅MSDN的"内核对象命名空间"文章)