Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Службы в Windows


Автор: AntiInt 7.9.2009, 21:05
Подскажите,пожалуйста,как иметь возможность видеть установленные на данном компьютере службы, запускать/останавливать службы,настраивать параметры запуска служб?Заранее благодарен!

Автор: jonie 7.9.2009, 23:12
Код

     #include <stdio.h>
     #include <Windows.h>

     void main()
     {
          //Open the Service Control Manager
          SC_HANDLE sc = ::OpenSCManager (NULL,NULL,SC_MANAGER_ENUMERATE_SERVICE);

          //Check if OpenSCManager returns NULL. Otherwise proceed
          if (sc != NULL)
          {
               printf("Opened SCM using OpenSCManager \n");
               ENUM_SERVICE_STATUS service_data, *lpservice;
               BOOL retVal;
               DWORD bytesNeeded,srvCount,resumeHandle = 0,srvType, srvState;

              srvType = SERVICE_WIN32;
              srvState = SERVICE_STATE_ALL;

              //Call EnumServicesStatus using the handle returned by OpenSCManager
              retVal = ::EnumServicesStatus (sc,srvType,srvState,&service_data,sizeof(service_data),
&bytesNeeded,&srvCount,&resumeHandle);

              DWORD err = GetLastError();
              //Check if EnumServicesStatus needs more memory space
              if ((retVal == FALSE) || err == ERROR_MORE_DATA)
              {
                     DWORD dwBytes = bytesNeeded + sizeof(ENUM_SERVICE_STATUS);
                     lpservice = new ENUM_SERVICE_STATUS [dwBytes];
                     EnumServicesStatus (sc,srvType,srvState,lpservice,dwBytes,
                             &bytesNeeded,&srvCount,&resumeHandle);
              }

              printf("Count of NT Services using EnumServicesStatus : %d\n\n",srvCount);

              for(int i=0;i<srvCount;i++)
              {
                    printf("%s\n",lpservice[i].lpDisplayName);
              }
         }

         //Close the SC_HANLDE returned by OpenSCManager
         CloseServiceHandle(sc);

     }

© http://www.codersource.net/win32_enumservicesstatus.html

Автор: AntiInt 9.9.2009, 18:00
А как можно настраивать пареметры запуска служб?

Автор: smoke_man 9.9.2009, 18:50
Посмотри http://dic.academic.ru/dic.nsf/ruwiki/192522

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)