Функция OpenSCManager

Функция OpenSCManager устанавливает связь с диспетчером управления службами на указанном компьютере и открывает указанную базу данных диспетчера управления службами.

Синтаксис

SC_HANDLE OpenSCManager(
  LPCTSTR lpMachineName,
  LPCTSTR lpDatabaseName,
  DWORD dwDesiredAccess
);

Параметры

lpMachineName

[in] Указатель на строку с завершающим нулем, которая задает имя целевого компьютера. Если указатель имеет значение ПУСТО (NULL) или указывает на пустую строку, функция соединяется с диспетчером управления службами на локальном компьютере.

lpDatabaseName

[in] Указатель на строку с завершающим нулем, которая задает имя открываемой базы данных диспетчера управления службами. Этот параметр должен быть установлен в SERVICES_ACTIVE_DATABASE. Если это  значение ПУСТО (NULL), база данных SERVICES_ACTIVE_DATABASE открыта по умолчанию.

dwDesiredAccess

[in] Доступ к диспетчеру управления службами. Перечень прав доступа, см. в статье Защита службы и права доступа.

Перед предоставлением требуемых прав доступа, система проверяет маркер доступа вызывающего процесса опираясь на список разграничительного контроля доступа дескриптора безопасности, связанного с диспетчером управления службами.

Право доступа SC_MANAGER_CONNECT определяется неявно, путем вызова этой функции.

Возвращаемые значения

Если функция завершается успешно, возвращаемое значение - дескриптор указанной базы данных диспетчера управления службами.

Если функция завершается ошибкой, возвращаемое значение - значение ПУСТО (NULL). Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.

Код возврата Описание
ERROR_ACCESS_DENIED Затребованный доступ был отвергнут.
ERROR_DATABASE_DOES_NOT_EXIST Указанная база данных не существует.
ERROR_INVALID_PARAMETER Указанный параметр недействителен.

Замечания

Когда процесс использует функцию OpenSCManager, чтобы открыть дескриптор базы данных диспетчера управления службами, система выполняет проверку безопасности перед предоставлением требуемого доступа.

Только прошедшим контроль доступа пользователям предоставляются права доступа  SC_MANAGER_CONNECT, SC_MANAGER_ENUMERATE_SERVICE и SC_MANAGER_QUERY_LOCK_STATUS

Windows 2000/NT:  Всм процессам предоставляются права доступа SC_MANAGER_CONNECT, SC_MANAGER_ENUMERATE_SERVICE и SC_MANAGER_QUERY_LOCK_STATUS. Это дает возможность любому процессу открыть дескриптор базы данных диспетчера управления службами, который он может использовать в функциях OpenService, EnumServicesStatusEx и QueryServiceLockStatus.

Только процессы с привилегиями Администратора в состоянии открыть дескриптор базы данных, который может использоваться функциями CreateService и LockServiceDatabase.

Возвращенный дескриптор действителен только для процесса который вызывается  функцией OpenSCManager. Он может быть закрыт путем вызова функции CloseServiceHandle.

Демонстрационный код

Пример смотри в статье Открытие базы данных SCManager.

Смотри также

Обзор Службы, Функции, используемые службамиCloseServiceHandle, CreateService, EnumServicesStatusEx, LockServiceDatabase, OpenService, QueryServiceLockStatus

Размещение и совместимость OpenSCManager

К Windows XP Да 
л Windows 2000 Professional Да
и Windows NT Workstation Да
е Windows Me Нет
н Windows 98 Нет
т Windows 95 Нет
 
С Windows Server 2003 Да
е Windows 2000 Server Да
р Windows NT Server Да
в    
е    
р    
Используемая библиотека Advapi32.lib
Используемая DLL advapi32.dll
 Заголовочный файл  
- объявлено в Winsvc.h
 - включено в Windows.h
 Unicode Реализуется как OpenSCManagerW(Unicode) и OpenSCManagerA (ANSI)
 Замечания по платформе Не имеется

 

Назад в оглавление
На главную страницу
В оглавление справки

Hosted by uCoz