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

OpenService打开SCardSvr服务失败,提示的是ERROR_ACCESS_DENIED,怎么解决

2012-10-21 
OpenService打开SCardSvr服务失败,提示的是ERROR_ACCESS_DENIED,如何解决如题,我先用OpenSCManager打开“服

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
[解决办法]
权限不对,或者用户问题。

热点排行