ChangeServiceConfig2W 函数 (winsvc.h)
更改服务的可选配置参数。
语法
BOOL ChangeServiceConfig2W(
[in] SC_HANDLE hService,
[in] DWORD dwInfoLevel,
[in, optional] LPVOID lpInfo
);
参数
[in] hService
服务的句柄。 此句柄由 OpenServiceW 或 CreateServiceW 函数返回,并且必须具有 SERVICE_CHANGE_CONFIG 访问权限。 有关详细信息,请参阅 服务安全和访问权限。
如果服务控制器处理 SC_ACTION_RESTART 操作,hService 必须具有 SERVICE_START 访问权限。
[in] dwInfoLevel
要更改的配置信息。 此参数可以是下列值之一。
价值 | 意义 |
---|---|
|
lpInfo 参数是指向 SERVICE_DELAYED_AUTO_START_INFO 结构的指针。
Windows Server 2003 和 Windows XP:不支持 此值。 |
|
lpInfo 参数是指向 SERVICE_DESCRIPTION 结构的指针。 |
|
lpInfo 参数是指向 SERVICE_FAILURE_ACTIONS 结构的指针。
如果服务控制器处理 SC_ACTION_REBOOT 操作,则调用方必须具有 SE_SHUTDOWN_NAME 权限。 有关详细信息,请参阅 使用特殊特权运行。 |
|
lpInfo 参数是指向 SERVICE_FAILURE_ACTIONS_FLAG 结构的指针。
Windows Server 2003 和 Windows XP:不支持 此值。 |
|
lpInfo 参数是指向 SERVICE_PREFERRED_NODE_INFO 结构的指针。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支持此值。 |
|
lpInfo 参数是指向 SERVICE_PRESHUTDOWN_INFO 结构的指针。
Windows Server 2003 和 Windows XP:不支持 此值。 |
|
lpInfo 参数是指向 SERVICE_REQUIRED_PRIVILEGES_INFO 结构的指针。
Windows Server 2003 和 Windows XP:不支持 此值。 |
|
lpInfo 参数是指向 SERVICE_SID_INFO 结构的指针。 |
|
lpInfo 参数是指向 SERVICE_TRIGGER_INFO 结构的指针。
ChangeServiceConfig2的 ANSI 版本不支持此值。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:在 Windows Server 2008 R2 之前不支持此值。 |
|
lpInfo 参数是 SERVICE_LAUNCH_PROTECTED_INFO 结构的指针。
注意 从 Windows 8.1 开始支持此值。
|
[in, optional] lpInfo
指向要为配置信息设置的新值的指针。 此数据的格式取决于 dwInfoLevel 参数的值。 如果此值 NULL,则信息保持不变。
返回值
如果函数成功,则返回值为非零。
如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError。
言论
ChangeServiceConfig2 函数更改服务控制管理器数据库中指定服务的可选配置信息。 可以使用 QueryServiceConfig2 函数获取当前的可选配置信息。
不能为共享服务控制管理器进程的服务设置 SERVICE_CONFIG_FAILURE_ACTIONS 值。 这包括可执行映像为“Services.exe”的所有服务。
可以使用 ChangeServiceConfigW 和 QueryServiceConfigW 函数来更改和查询其他配置信息。
如果服务配置为在服务完成后重启并出现错误,服务控制管理器会将重启操作排在指定的时间延迟之后进行。 无法取消排队重启操作。 如果手动重启服务,然后在发生排队重启操作之前停止,则在时间延迟过后,服务将意外重启。 必须显式禁用该服务,以防止其重启。
SERVICE_CONFIG_LAUNCH_PROTECTED 值可用于将服务启动为受保护服务。 若要以受保护身份启动服务,必须使用特殊证书对服务进行签名。
SERVICE_CONFIG_LAUNCH_PROTECTED示例:
SERVICE_LAUNCH_PROTECTED_INFO Info;
SC_HANDLE hService;
Info.dwLaunchProtected = SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT;
hService = CreateService (...);
if (ChangeServiceConfig2(hService,
SERVICE_CONFIG_LAUNCH_PROTECTED,
&Info) == FALSE)
{
Result = GetLastError();
}
例子
有关示例,请参阅 更改服务的配置。
注意
winsvc.h 标头将 ChangeServiceConfig2 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | 窗户 |
标头 | winsvc.h (包括 Windows.h) |
库 | Advapi32.lib |
DLL | Advapi32.dll |
另请参阅
QueryServiceDynamicInformation
SERVICE_DELAYED_AUTO_START_INFO