Многие операции требуют открытого дескриптора объекта 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());
|