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


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

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

Синтаксис

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

Параметры

[in] hSCManager

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

[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 [только классические приложения]
Целевая платформа Windows
Header winsvc.h (включая Windows.h)
Библиотека Advapi32.lib
DLL Advapi32.dll

См. также раздел

ChangeServiceConfig

CloseServiceHandle

ControlService

CreateService

DeleteService

EnumDependentServices

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation

QueryServiceObjectSecurity

QueryServiceStatusEx

Дескрипторы SCM

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

SetServiceObjectSecurity

StartService