Функция ChangeServiceConfig изменяет параметры конфигурации службы. Чтобы изменять дополнительные параметры конфигурации, используйте функцию ChangeServiceConfig2.
Синтаксис
BOOL ChangeServiceConfig( SC_HANDLE hService, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCTSTR lpBinaryPathName, LPCTSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCTSTR lpDependencies, LPCTSTR lpServiceStartName, LPCTSTR lpPassword, LPCTSTR lpDisplayName ); |
Параметры
Тип | Предназначение |
---|---|
SERVICE_FILE_SYSTEM_DRIVER | Сервисный драйвер файловой системы. |
SERVICE_KERNEL_DRIVER | Сервисный драйвер. |
SERVICE_WIN32_OWN_PROCESS | Служба, которая запускается в своем собственном процессе. |
SERVICE_WIN32_SHARE_PROCESS | Служба, которая совместно использует процесс с другими службами. |
Если Вы задаете или SERVICE_WIN32_OWN_PROCESS или SERVICE_WIN32_SHARE_PROCESS, а служба запускается в контексте учетной записи LocalSystem, Вы можете также задать и следующий тип.
Тип | Предназначение |
---|---|
SERVICE_INTERACTIVE_PROCESS | Служба может
взаимодействовать с рабочим столом. Дополнительную информацию смотри в статье Диалоговые службы. |
Тип | Предназначение |
---|---|
SERVICE_AUTO_START | Служба, запускается автоматически диспетчером управления службами в ходе запуска системы. |
SERVICE_BOOT_START | Драйвер устройства, запускается системным загрузчиком. Это значение действительно только для служб драйвера. |
SERVICE_DEMAND_START | Служба, запускается диспетчером управления службами, когда процесс вызывает функцию StartService. |
SERVICE_DISABLED | Служба, которая не может быть запущена. Попытки запустить службу приводят к коду ошибки ERROR_SERVICE_DISABLED. |
SERVICE_SYSTEM_START | Драйвер устройства, запущенный функцией IoInitSystem. Это значение действительно только для служб драйвера. |
Значения | Предназначение |
---|---|
SERVICE_ERROR_IGNORE | Программа запуска регистрирует ошибку, но продолжает операцию запуска. |
SERVICE_ERROR_NORMAL | Программа запуска регистрирует ошибку и показывает всплывающее окно сообщения, но продолжает операцию запуска. |
SERVICE_ERROR_SEVERE | Программа запуска регистрирует ошибку. Если стартовала последняя, заведомо без ошибок конфигурация, то операция запуска продолжается. Иначе, система перезапускается с последней, заведомо без ошибок конфигурацией. |
SERVICE_ERROR_CRITICAL | Программа запуска, если возможно, регистрирует ошибку. Если стартовала последняя, заведомо без ошибок конфигурация, то операция запуска завершается ошибкой. Иначе, система перезапускается с последней, заведомо без ошибок конфигурацией. |
Путь может также включать в себя параметры автозапуска службы. Например, "d: \\ myshare \\ myservice.exe arg1 arg2". Эти параметры передаются в точку входа службы (обычно это главная функция main).
Программа запуска использует группы очередности загрузки, чтобы загрузить группы служб в указанном порядке относительно других групп. Список очередности загрузки групп содержится в значении ServiceGroupOrder ключа реестра ниже:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control |
Вы можете использовать признак для того, чтобы упорядочить запуск службы в пределах очередности загрузки в группе, задавая вектор признака очередности в значении GroupOrderList следующего ключа реестра:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control |
Признаки вычисляются только для служб драйвера, которые имеют типы пуска SERVICE_BOOT_START или SERVICE_SYSTEM_START.
Вы должны ставить в начале имени группы SC_GROUP_IDENTIFIER так, чтобы они могли отделяться от имени службы, потому что службы и группы служб совместно используют то же самое пространство имен.
Windows NT: Если тип службы - SERVICE_WIN32_SHARE_PROCESS, Вы должны задать учетную запись LocalSystem. На более поздних версиях Windows, общедоступный процесс может запуститься как любой пользователь.
Если тип службы - SERVICE_KERNEL_DRIVER или SERVICE_FILE_SYSTEM_DRIVER, то имя - имя объекта драйвера который система использует, чтобы загрузить драйвер устройства. Задайте значение ПУСТО (NULL), если драйвер должен использовать имя объекта по умолчанию, созданное системой ввода / вывода.
Пароли игнорируются для служб драйвера.
Если функция завершается успешно, возвращаемое значение является ненулевым.
Если функция завершается ошибкой, возвращаемое значение - нуль. Чтобы получить дополнительную информацию об ошибке, вызовите GetLastError.
Следующие коды ошибки могут установиться диспетчером управления службами. Другие коды ошибки могут установиться функциями реестра, которые вызывает диспетчер управления службами.
Код возврата | Описание |
---|---|
ERROR_ACCESS_DENIED | Дескриптор не имеет права доступа SERVICE_CHANGE_CONFIG. |
ERROR_CIRCULAR_DEPENDENCY | Определяется циклическая зависимость служб. |
ERROR_DUPLICATE_SERVICE_NAME | Отображаемое имя уже существует в менеджере базы данных диспетчера службы, или как имя службы или как другое отображаемое имя. |
ERROR_INVALID_HANDLE | Указанный дескриптор недействителен. |
ERROR_INVALID_PARAMETER | Параметр, который определялся, недействителен. |
ERROR_INVALID_SERVICE_ACCOUNT | Имя учетной записи не существует, или служба определяется, как совместно использующая тот же самый двоичный файл, что и установленная служба, но с именем учетной записи, которое не то же самое, что и установленная служба. |
ERROR_SERVICE_MARKED_FOR_DELETE | Служба была намечена для удаления. |
Функция ChangeServiceConfig изменяет информацию о конфигурации для указанной службы в базе данных диспетчера управления службами. Вы можете получить текущую информацию о конфигурации при помощи использования функции QueryServiceConfig.
Если конфигурация изменяется для службы, которая запускается, за исключением lpDisplayName, изменения не вступают в силу до тех пор, пока служба не остановиться. Чтобы обновить мандат без перезапуска службы, используйте функцию LsaCallAuthenticationPackage.
Установка параметра lpServiceStartName изменяет учетную запись входа в систему службы. Это может вызвать проблемы. Если Вы зарегистрировали сервисное основное имя (SPN), оно теперь будет зарегистрировано в неправильной учетной записи. Точно так же, если Вы использовали элемент списка контроля доступа (ACE), чтобы предоставить доступ к службе, он будет теперь предоставлять доступ к неправильной учетной записи.
Пример смотри в статье Изменение конфигурации службы.
Обзор Службы, Функции, используемые службами, ChangeServiceConfig2, CreateService, LockServiceDatabase, OpenService, QueryServiceConfig, QueryServiceConfig2, StartService
Размещение и совместимость ChangeServiceConfig |
||
К |
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 |
Реализуется как ChangeServiceConfigW (Unicode) и ChangeServiceConfigA (ANSI). |
|
Замечания по платформе |
Не имеется |