读书人

CreateMutex 函数返回拒绝访问,该怎么

发布时间: 2012-03-09 21:42:54 作者: rapoo

CreateMutex 函数返回拒绝访问

一个进程为服务,创建了一个互斥量,在另一个进程里面也创建同名的互斥量,但在另一个exe里面创建互斥量的时候总是返回 "拒绝访问 "的错误 ,并且使用OpenMutex时返回同样的错误。

我把作为服务的这个进程不注册为服务而直接运行,这两个程序就能运行的很正常

我在普通exe里面CreateMutex之前也提升了权限,但还是返回同样的错误

请高手指教!!!
多谢!!!

[解决办法]
服务里面创建的进程你知道需要什么权限才能访问吗?
还有,你总共几个进程啊??两个,三个???
一般情况下,服务应该是由系统帐号启动的。而普通进程是由用户帐号启动的。普通访问服务创建的一些对象是需要特权的哦。
[解决办法]
SECURITY_DESCRIPTOR sd;
InitializeSecurityDescriptor(&sd, SECURITY_DESCRIPTOR_REVISION);
SetSecurityDescriptorDacl(&sd, TRUE, (PACL)NULL, FALSE);

SECURITY_ATTRIBUTESsa;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = &sd;

HANDLE hProcMutex = ::CreateMutex(&sa, FALSE, _T( "aaa "));
[解决办法]
服务和用户程序不是一个用户,权限不同,不知道提高用户程序的权限是否可以。
相关函数:
OpenProcessToken
LookupPrivilegeValue
AdjustTokenPrivileges

读书人网 >VC/MFC

热点推荐