How do I start/stop/create/remove/check a service?: Difference between revisions

From NSIS Wiki
Jump to navigationJump to search
No edit summary
(added a modif to Sunjammer's plugin)
Line 11: Line 11:


[[Category:Scripting FAQ]]
[[Category:Scripting FAQ]]
''Addition to Sunjammer's services plug-in to autostart services''
// in sendservicecommand.c
else if (stricmp("autostart",command) == 0)
    {
    okay = ChangeServiceConfig(hService,
      SERVICE_NO_CHANGE,SERVICE_AUTO_START,SERVICE_NO_CHANGE ,NULL,NULL,NULL,NULL,NULL,NULL,NULL );
    }
    else if (stricmp("manualstart",command) == 0)
    {
    okay = ChangeServiceConfig(hService,
      SERVICE_NO_CHANGE,SERVICE_DEMAND_START,SERVICE_NO_CHANGE ,NULL,NULL,NULL,NULL,NULL,NULL,NULL );
    }

Revision as of 14:46, 10 September 2007

There are currently 6 known methods to handle services using NSIS scripting:

  • Use Sunjammer's services plug-in: Services.zip (20 KB).
  • Use dselkirk's NSIS Service Lib.
  • Use sl's nsSCM
  • Use doberlec's all-in-one Swiss scripting knife - Nopey.
  • Use Speed78's NSIS Simple Service Plugin
  • Execute the NET command (use Exec, ExecWait or nsExec).
  • Execute your service EXE with special command line switches telling it what to do (use Exec, ExecWait or nsExec).
  • Execute sc.exe that comes with WinXP (C:\windows\system32\sc.exe). Also allows to define specific user account to run the service.


Addition to Sunjammer's services plug-in to autostart services

// in sendservicecommand.c
else if (stricmp("autostart",command) == 0)
   {
    okay = ChangeServiceConfig(hService,
     SERVICE_NO_CHANGE,SERVICE_AUTO_START,SERVICE_NO_CHANGE ,NULL,NULL,NULL,NULL,NULL,NULL,NULL );
   }
   else if (stricmp("manualstart",command) == 0)
   {
    okay = ChangeServiceConfig(hService,
     SERVICE_NO_CHANGE,SERVICE_DEMAND_START,SERVICE_NO_CHANGE ,NULL,NULL,NULL,NULL,NULL,NULL,NULL );
   }