专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C语言

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

发布时间:2011-06-28 13:07:51 文章来源:www.iduyao.cn 采编人员:星星草
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
------解决方案--------------------
权限不对,或者用户问题。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: