Поделиться через


Функция OpenServiceA (winsvc.h)

Открывает существующую службу.

Синтаксис

SC_HANDLE OpenServiceA(
  [in] SC_HANDLE hSCManager,
  [in] LPCSTR    lpServiceName,
  [in] DWORD     dwDesiredAccess
);

Параметры

[in] hSCManager

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

[in] lpServiceName

Имя открываемой службы. Это имя, указанное параметром lpServiceName функции CreateService при создании объекта службы, а не отображаемого имени службы, отображаемого приложениями пользовательского интерфейса для идентификации службы.

Максимальная длина строки составляет 256 символов. База данных диспетчера управления службами сохраняет регистр символов, но сравнения имен службы всегда не учитывает регистр. Косая черта (/) и обратная косая черта (\) являются недопустимыми символами имени службы.

[in] dwDesiredAccess

Доступ к службе. Список прав доступа см. в службы безопасности и доступа.

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

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

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

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

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

Возвращаемый код Описание
ERROR_ACCESS_DENIED
Дескриптор не имеет доступа к службе.
ERROR_INVALID_HANDLE
Указанный дескриптор недопустим.
ERROR_INVALID_NAME
Указанное имя службы недопустимо.
ERROR_SERVICE_DOES_NOT_EXIST
Указанная служба не существует.

Замечания

Возвращенный дескриптор действителен только для процесса, вызываемого OpenService. Его можно закрыть, вызвав функцию CloseServiceHandle.

Чтобы использовать OpenService, привилегии не требуются, кроме SC_MANAGER_CONNECT.

Примеры

Пример см. в разделе Запуск службы.

Заметка

Заголовок winsvc.h определяет OpenService как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
целевая платформа Виндоус
заголовка winsvc.h (включая Windows.h)
библиотеки Advapi32.lib
DLL Advapi32.dll

См. также

ChangeServiceConfig

CloseServiceHandle

ControlService

CreateService

DeleteService

EnumDependentServices

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation

QueryServiceObjectSecurity

QueryServiceStatusEx

обработчики SCM

Функции службы

SetServiceObjectSecurity

StartService