[cpp]
//////////////////////////////////////////////////////////////////////////
//设置服务启动类型为自动 0成功
int ChangeStartType()
{
SC_HANDLE schSCManager = OpenSCManager(
NULL,
NULL,
SC_MANAGER_ALL_ACCESS);
if (NULL == schSCManager)
{
printf("OpenSCManager failed (%d)n", GetLastError());
return -1;
}
SC_HANDLE schService = OpenService(schSCManager, "服务名称", SERVICE_CHANGE_CONFIG);
if (schService == NULL)
{
printf("OpenService failed (%d)n", GetLastError());
CloseServiceHandle(schSCManager);
return -1;
}
int ret = -1;
SC_LOCK sclLock = LockServiceDatabase(schService);
//将启动类型更改为自动
if (! ChangeServiceConfig(
schService, // handle of service
SERVICE_NO_CHANGE, // service type: no change
SERVICE_AUTO_START, // service start type
SERVICE_NO_CHANGE, // error control: no change
NULL, // binary path: no change
NULL, // load order group: no change
NULL, // tag ID: no change
NULL, // dependencies: no change
NULL, // account name: no change
NULL, // password: no change
NULL) ) // display name: no change
{
printf("ChangeServiceConfig failed (%d)n", GetLastError());
ret = -1;
}
else ret = 0;
UnlockServiceDatabase(sclLock);
CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
return ret;
}
[/cpp]