• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 262
  • Last Modified:

Stop NT service

How do I stop NT/Win2k service using code(not net stop)?
0
alto
Asked:
alto
1 Solution
 
jkrCommented:
You would do it like

void StopService ( LPCTSTR pszServiceName)
{
     SERVICE_STATUS ssStatus;
    SC_HANDLE   schService;
    SC_HANDLE   schSCManager;

    schSCManager     =     OpenSCManager     (     NULL,                   // machine (NULL == local)
                                                       NULL,                   // database (NULL == default)
                                                       SC_MANAGER_ALL_ACCESS   // access required
                                                  );
    if     (     schSCManager)
          {
               schService     =     OpenService     (     schSCManager,
                                                       pszServiceName,
                                                       SERVICE_ALL_ACCESS
                                                  );

               if     (     schService)
                    {
                         // try to stop the service
                         if     (     ControlService     (     schService,
                                                            SERVICE_CONTROL_STOP,
                                                            &ssStatus
                                                       )
                              )
                              {
                                   wprintf     (     TEXT     (     "Stopping %s."),
                                                  pszServiceName
                                             );

                                   Sleep     (     1000 );

                                   while     (     QueryServiceStatus     (     schService,    
                                                                                &ssStatus
                                                                           )
                                             )
                                             {
                                                  if     (          SERVICE_STOP_PENDING    
                                                            ==     ssStatus.dwCurrentState
                                                       )
                                                       {
                                                            wprintf     (     TEXT     (     "."));
                                                            Sleep( 1000 );
                                                       }
                                                  else
                                                            break;
                                             }

                                   if     (     SERVICE_STOPPED     ==     ssStatus.dwCurrentState)
                                             wprintf     (     TEXT     (     "\n%s stopped.\n"),
                                                            pszServiceName
                                                       );
                                   else
                                             wprintf     (     TEXT     (     "\n%s failed to stop.\n"),
                                                            pszServiceName
                                                       );

                              }

                    CloseServiceHandle     (     schService);
               }
          }
}
0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now