RegisterApplicationRestart 函数 (winbase.h)

注册要重启的应用程序的活动实例。

语法

HRESULT RegisterApplicationRestart(
  [in, optional] PCWSTR pwzCommandline,
  [in]           DWORD  dwFlags
);

参数

[in, optional] pwzCommandline

指向 Unicode 字符串的指针,该字符串指定应用程序重启时应用程序的命令行参数。 可以指定的命令行的最大大小为 RESTART_MAX_CMD_LINE 个字符。 不要在命令行中包含可执行文件的名称;此函数会为你添加它。

如果此参数为 NULL 或空字符串,则会删除以前注册的命令行。 如果参数包含空格,请在 参数周围使用引号。

[in] dwFlags

此参数可以是 0 或以下一个或多个值。

含义
RESTART_NO_CRASH
1
如果进程因未经处理的异常而终止,请不要重启。
RESTART_NO_HANG
2
如果进程因应用程序未响应而终止,请不要重启。
RESTART_NO_PATCH
4
如果进程因安装更新而终止,请不要重启。
RESTART_NO_REBOOT
8
如果计算机因更新而重启,请不要重启进程。

返回值

此函数返回 成功时S_OK 或以下错误代码之一。

返回代码 说明
E_FAIL
内部错误。
E_INVALIDARG
指定的命令行太长。

注解

在应用程序遇到未经处理的异常或变得无响应之前,必须进行重启的初始注册。 然后,可以从恢复回调内部调用此函数以更新命令行。

对于正在更新的 Windows 应用程序,调用此函数的最后一次机会是在处理 WM_QUERYENDSESSION 消息时。 对于正在更新的控制台应用程序,必须在安装程序尝试关闭应用程序之前进行注册, (需要使注册保持最新状态;处理CTRL_C_EVENT通知) 时,不能调用此函数。

如果注册重启,但应用程序遇到未经处理的异常或响应不响应,则向用户提供重启应用程序的机会;未经用户同意,应用程序不会自动重启。 但是,如果应用程序正在更新并且需要重启,则会自动重启应用程序。

为了防止循环重启,系统仅在应用程序运行至少 60 秒时重启。

请注意,对于在更新需要重启计算机时要重启的应用程序,安装程序必须调用设置了 EWX_RESTARTAPPS 标志的 ExitWindowsEx 函数或设置了 SHUTDOWN_RESTARTAPPS 标志的 InitiateShutdown 函数。

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 winbase.h (包括 Windows.h)
Library Kernel32.lib
DLL Kernel32.dll

另请参阅

UnregisterApplicationRestart