首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

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

2012-03-09 
CreateMutex 函数返回拒绝访问一个进程为服务,创建了一个互斥量,在另一个进程里面也创建同名的互斥量,但在

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

热点排行