X
xernet
Unregistered / Unconfirmed
GUEST, unregistred user!
//看了一些相关的代码和文章自己动手写了一个启动系统服务的代码,{功能:启动已经停止或者暂停的系统服务}Procedure ServiceStart;varschService:SC_HANDLE;//服务句柄。schSCManager:SC_HANDLE;//服务管理句柄。ssStatus:TServiceStatus; //服务状态。lpServiceArgVectorschar; //保存启动参数。ServiceName: array[0..3] of Pchar;//保存服务名称。I:integer;begin lpServiceArgVectors:=nil; ServiceName[0]:='Messenger';//显现名称:'Messenger' ServiceName[1]:='RasMan';//显现名称:'Remote Access Connection Manager' ServiceName[2]:='Alerter';//显现名称:'Alerter' ServiceName[3]:='RpcLocator';//显现名称:'Remote Procedure Call (RPC) Locator' //以所有权限打开服务管理。 schSCManager:=OpenSCManager(nil,nil,SC_MANAGER_ALL_ACCESS); for I:=0 to length(ServiceName) do begin //以所有权限打开服务。 schService:=OpenService(schSCManager,ServiceName,SERVICE_ALL_ACCESS); QueryServiceStatus(schService,ssStatus); //查询服务状态。 if (ssStatus.dwCurrentState = SERVICE_STOPPED) or (ssStatus.dwCurrentState = SERVICE_PAUSED) then//如果服务状态是停止或者暂停就启动服务。 begin StartService(schService,0,lpServiceArgVectors); CloseServiceHandle(schService);//关闭该Service句柄 end; end; CloseServiceHandle(schSCManager);end;我发现有些系统服务可以有些就不能够启动,比如'Alerter'服务和'Messenger'服务就能正常的启动起来,'Netman'就不能启动,类似'Alerter'的服务名称和显示名称是一样的,就能启动,类似'Netman'的服务名称和显示名称不一样的不能启动,这是为何?