delphi 开发的服务程序,如何禁止用户关闭它
能禁止一般关闭就行了,在服务界面上不允许关闭就可以了,听说可以提升权限,但是还不太了解,有知道的兄弟能指点一二吗?是否有更好的方法禁止被关闭

解决方案 »

  1.   

    直接设置服务的AllowPause为false即可禁止服务暂停。
    直接设置服务的allowStop为false即可禁止服务停止。前提是你的工程是服务工程,要不然不会有上述两个属性。其实你就算禁止服务停止,也并不能防止用户停止掉你的服务,因为可以通过杀进程的方式结束服务运行。
    建议你搞多个exe通过互斥量或者信号量来互相监视,发现服务结束后就立即开启!
      

  2.   

    tasklist /svc查看PID值 然后taskkill /pid xx&taskkill /pid xx 两个进程同事结束,一下就完了 
    现在就是禁止结束进程的问题
      

  3.   


    { 与SCM管理器通话 }
    function TellSCM(dwState : DWORD ;  dwExitCode : DWORD; dwProgress : DWORD ): LongBool;
    var
       srvStatus : service_status;
    BEGIN
        srvStatus.dwServiceType := SERVICE_WIN32_SHARE_PROCESS;
        dwCurrState := dwState;
        srvStatus.dwCurrentState := dwState;
        srvStatus.dwControlsAccepted := SERVICE_ACCEPT_STOP or SERVICE_ACCEPT_PAUSE_CONTINUE or SERVICE_ACCEPT_SHUTDOWN;
    //把这里改成 srvStatus.dwControlsAccepted := SERVICE_ACCEPT_SHUTDOWN
    即可实现服务停止、暂停服务按钮成灰色!
        srvStatus.dwWin32ExitCode := dwExitCode;
        srvStatus.dwServiceSpecificExitCode := 0;
        srvStatus.dwCheckPoint := dwProgress;
        srvStatus.dwWaitHint := 3000;
        Result := SetServiceStatus( SvcStatsHandle, srvStatus );
    END;