Многие операции требуют открытого дескриптора объекта SCManager. Следующий пример демонстрирует, как получить этот дескриптор.
Другие операции на базе данных Диспетчера управления службами (SCM) требуют других уровней доступа, а Вы должны запросить только минимальный требуемый доступ. Если требуется доступ SC_MANAGER_ALL_ACCESS, функция OpenSCManager завершается ошибкой, если вызывающий процесс не имеет привилегий Администратора. Следующий пример показывает, как запросить полный доступ к базе данных ServicesActive на локальной машине.
#include <windows.h> #include <stdio.h> SC_HANDLE schSCManager; // Открываем дескриптор базы данных SC Manager. schSCManager = OpenSCManager( NULL, // локальная машина NULL, // база данных ServicesActive SC_MANAGER_ALL_ACCESS); // полные права доступа if (NULL == schSCManager) printf("OpenSCManager failed (%d)\n", GetLastError()); |