none
Работа с сервисами Windows RRS feed

  • Вопрос

  • Всем доброго времени суток. Кто может подсказать. Каким образом можно считывать данные о типе запуска службы Windows. Используя язык программирования C# в среде разработки Visual Studio. Как бы о состоянии службы данные получить не сложно используя класс ServiceController (https://msdn.microsoft.com/ru-ru/library/system.serviceprocess.servicecontroller(v=vs.110).aspx). Это уже запилил, а вот о типе запуска (Автоматический, ручной) получить ни как не выходит. Хотя и есть свойство StartType в классе ServiceController, но оно почему то недоступно. А доступно из ServiceInstaller только, но он для создания службы, а не для её опроса, как я понимаю. Подскажите, как можно решить данный вопрос. С опросом данных о типе запуска службы расположенной на удаленном компьютере. И последующем изменении этого параметра службы.
    19 июня 2016 г. 11:53

Ответы

  • Добрый день.

    Получить статус не подскажу, а вот установить:

    [DllImport("kernel32.dll", SetLastError = true)]
    
    [return: MarshalAs(UnmanagedType.Bool)]
    
    private static extern bool ChangeServiceConfig ( SafeHandle hService, uint dwServiceType, uint dwStartType,
    
           uint dwErrorControl, string lpBinaryPathName, string lpLoadOrderGroup, out uint lpdwTagId,
    
           string lpDependencies, string lpServiceStartName, string lpPassword, string lpDisplayName );
    
     
    
    private const uint SERVICE_NO_CHANGE = 0xFFFFFFFF;
    
    private const uint SERVICE_BOOT_START = 0;
    
    private const uint SERVICE_SYSTEM_START = 1;
    
     
    
    static void ChangeStartType ( ServiceController svc, ServiceStartMode mode )
    
    {
    
       uint nTag;
    
       ChangeServiceConfig(svc.ServiceHandle, SERVICE_NO_CHANGE, (uint)mode, SERVICE_NO_CHANGE,
    
                                 null, null, out nTag, null, null, null, null);
    
    }

    Взято здесь.

    20 июня 2016 г. 5:59
    Отвечающий