读书人

OpenService打开SCardSvr服务失败提

发布时间: 2012-10-21 09:00:07 作者: rapoo

OpenService打开SCardSvr服务失败,提示的是ERROR_ACCESS_DENIED,如何解决
如题,我先用OpenSCManager打开“服务控制管理器”, 然后把获得的句柄当做输入调用openservice打开SCardSvr服务,就是smcart card服务,打不开,调用getlasterror报的错误是ERROR_ACCESS_DENIED, 不知道该怎么办了,尝试了许多办法都没有解决,不知道哪位大哥知道怎么解决这个问题呢?部分代码如下[code=C/C++][/code]
CString lpServiceName = "SCardSvr";
DWORD lastError;

SC_HANDLE schSCManager;
SC_HANDLE schService;
SERVICE_STATUS lpServiceStatus;

memset(&lpServiceStatus, 0, sizeof(SERVICE_STATUS));

// Get a handle to the SCM database.

schSCManager = OpenSCManager(
NULL, // local computer
NULL, // servicesActive database
SC_MANAGER_CONNECT); // full access rights
if (NULL == schSCManager)
{
//printf("OpenSCManager failed (%d)\n", GetLastError());
return "";
}

// Get a handle to the service.
schService = OpenService(
schSCManager, // SCM database
lpServiceName, // name of service
SERVICE_ALL_ACCESS); // full access
if (schService == NULL)
{
// printf("OpenService failed (%d)\n", GetLastError());
lastError=GetLastError();
CloseServiceHandle(schSCManager);
return "";
}

[解决办法]
schSCManager = OpenSCManager(
NULL, // local computer
NULL, // servicesActive database
SC_MANAGER_CONNECT); // full access rights
if (NULL == schSCManager)
{
//printf("OpenSCManager failed (%d)\n", GetLastError());
return "";
}

改为
SC_MANAGER_ALL_ACCESS
[解决办法]
权限不对,或者用户问题。

读书人网 >C语言

热点推荐