如题,
要是我要把C:\1.EXE写入服务启动,那么要改要这么写?

解决方案 »

  1.   

    uses winsvc; 
    function InstallService(ServiceName, DisplayName, FileName: string): boolean; 
    var 
    SCManager,Service: THandle; 
    Args: pchar; 
    begin 
    Result := False; 
    SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); 
    if SCManager = 0 then Exit; 
    try 
    Service := CreateService(SCManager, //句柄 
    PChar(ServiceName), //服务名称 
    PChar(DisplayName), //显示服务名 
    SERVICE_ALL_ACCESS, //服务访问类型 
    SERVICE_WIN32_OWN_PROCESS, //服务类型 or SERVICE_INTERACTIVE_PROCESS 
    SERVICE_AUTO_START, //自动启动服务 
    SERVICE_ERROR_IGNORE, //忽略错误 
    PChar(FileName), //启动的文件名 
    nil, //name of load ordering group (载入组名) 'LocalSystem' 
    nil, //标签标识符 
    nil, //相关性数组名 
    nil, //帐户(当前) 
    nil); //密码(当前) Args := nil; 
    StartService(Service, 0, Args); 
    CloseServiceHandle(Service); 
    finally 
    CloseServiceHandle(SCManager); 
    end; 
    Result := True; 
    end; procedure UninstallService(ServiceName: string); 
    var 
    SCManager,Service: THandle; 
    ServiceStatus: SERVICE_STATUS; 
    begin 
    SCManager := OpenSCManager(nil, nil, SC_MANAGER_ALL_ACCESS); 
    if SCManager = 0 then Exit; 
    try 
    Service := OpenService(SCManager, PChar(ServiceName), SERVICE_ALL_ACCESS); 
    ControlService(Service, SERVICE_CONTROL_STOP, ServiceStatus); 
    DeleteService(Service); 
    CloseServiceHandle(Service); 
    finally 
    CloseServiceHandle(SCManager); 
    end; 
    end; procedure ServiceCtrlHandler(Control: dword); stdcall; 
    begin 
    case Control of 
    SERVICE_CONTROL_STOP: 
    begin 
    Stopped := True; 
    Status.dwCurrentState := SERVICE_STOPPED; 
    end; 
    SERVICE_CONTROL_PAUSE: 
    begin 
    Paused := True; 
    Status.dwcurrentstate := SERVICE_PAUSED; 
    end; 
    SERVICE_CONTROL_CONTINUE: 
    begin 
    Paused := False; 
    Status.dwCurrentState := SERVICE_RUNNING; 
    end; 
    SERVICE_CONTROL_INTERROGATE: ; 
    SERVICE_CONTROL_SHUTDOWN: Stopped := True; 
    end; 
    SetServiceStatus(StatusHandle, Status); 
    end; 
    刚喝了酒的(还是白酒),头晕,如果有不对的地方还请多包涵
      

  2.   

    写服务要建立服务工程,如果你的EXE不是服务,那么写入服务也无法“自动启动”。
    其实并不难,只是具体步骤有些烦琐。我以前写过,需要的话可以把这个工程发给你。