读书人

怎样关闭一个服务解决办法

发布时间: 2012-01-14 20:02:35 作者: rapoo

怎样关闭一个服务
编程关闭自动播放的服务
"Shell Hardware Detection"

SC_HANDLE scHandle=OpenSCManager(NULL,NULL,SC_MANAGER_ALL_ACCESS);
if(scHandle==NULL){
MessageBox("创建服务失败");
ErrorCode();
return;
}
SC_HANDLE hService=OpenService(scHandle,"Shell Hardware Detection",SC_MANAGER_ALL_ACCESS);
if(hService==NULL){//老是在这一步失败
ErrorCode();
MessageBox("打开服务失败");

return;
}
if(ControlService(hService,SERVICE_CONTROL_STOP,NULL)){
MessageBox("停止服务成功");
}
结果老是打开服务失败。。。。。。。。。
ERROR_SERVICE_DOES_NOT_EXIST
1060 The specified service does not exist as an installed service.
这是错误代码

[解决办法]
//参照下面的代码对照你的代码即可解决问题


SERVICE_STATUS ssStatus;
DWORD fdwAccess;
DWORD dwStartTickCount, dwWaitTime;

// The required service object access depends on the control.

switch (fdwControl)
{
case SERVICE_CONTROL_STOP:
fdwAccess = SERVICE_STOP;
break;

case SERVICE_CONTROL_PAUSE:
case SERVICE_CONTROL_CONTINUE:
fdwAccess = SERVICE_PAUSE_CONTINUE;
break;

case SERVICE_CONTROL_INTERROGATE:
fdwAccess = SERVICE_INTERROGATE;
break;

default:
fdwAccess = SERVICE_INTERROGATE;
}

// Open a handle to the service.

schService = OpenService(
schSCManager, // SCManager database
TEXT("Sample_Srv"), // name of service
fdwAccess); // specify access
if (schService == NULL)
{
printf("OpenService failed (%d)\n", GetLastError());
return FALSE;
}

// Send a control value to the service.

if (! ControlService(
schService, // handle to service
fdwControl, // control value to send
&ssStatus) ) // address of status info
{
printf("ControlService failed (%d)\n", GetLastError());
return FALSE;
}

// Print the service status.

printf("\nStatus of Sample_Srv: \n");
printf(" Service Type: 0x%x\n", ssStatus.dwServiceType);
printf(" Current State: 0x%x\n", ssStatus.dwCurrentState);
printf(" Controls Accepted: 0x%x\n",
ssStatus.dwControlsAccepted);
printf(" Exit Code: %d\n", ssStatus.dwWin32ExitCode);
printf(" Service Specific Exit Code: %d\n",
ssStatus.dwServiceSpecificExitCode);
printf(" Check Point: %d\n", ssStatus.dwCheckPoint);
printf(" Wait Hint: %d\n", ssStatus.dwWaitHint);

return TRUE;

读书人网 >VC/MFC

热点推荐