Функция 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) | |
Замечания по платформе | Не имеется |