作者在 2010-09-06 14:24:35 发布以下内容
void ReconfigureService(LPSTR lpServiceName, LPSTR lpDesc)
{
SC_HANDLE schSCManager = ::OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS);
if(schSCManager != NULL)
{
//Need to acquire database lock before reconfiguring.
SC_LOCK sclLock = LockServiceDatabase(schSCManager);
if(sclLock != NULL)
{
//Open a handle to the service.
SC_HANDLE schService = OpenService(
schSCManager, // SCManager database
lpServiceName, // name of service
SERVICE_CHANGE_CONFIG); // need CHANGE access
if(schService != NULL)
{
SERVICE_DESCRIPTION sdBuf;
sdBuf.lpDescription = lpDesc;
if(ChangeServiceConfig2(
schService, SERVICE_CONFIG_DESCRIPTION,
&sdBuf))
{
//MessageBox(NULL, "Change SUCCESS ", " ",MB_SERVICE_NOTIFICATION);
}
CloseServiceHandle(schService);
}
UnlockServiceDatabase(sclLock);
}
CloseServiceHandle(schSCManager);
}
}