Share via


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

傳回碼 Description
E_FAIL
內部錯誤。
E_INVALIDARG
指定的命令行太長。

備註

在應用程式遇到未處理的例外狀況或變得沒有回應之前,必須先開始進行重新啟動的初始註冊。 然後,您可以從復原回呼內呼叫此函式,以更新命令行。

對於正在更新的 Windows 應用程式,呼叫此函式的最後一個機會是在處理 WM_QUERYENDSESSION 訊息時。 針對正在更新的主控台應用程式,必須先進行註冊,安裝程式才會嘗試關閉應用程式, (您必須讓註冊保持最新狀態;處理CTRL_C_EVENT通知) 時,您無法呼叫此函式。

如果您註冊重新啟動,且應用程式遇到未處理的例外狀況或沒有回應,則會提供使用者重新啟動應用程式的機會;應用程式不會在使用者同意的情況下自動重新啟動。 不過,如果應用程式正在更新且需要重新啟動,則會自動重新啟動應用程式。

為了避免迴圈重新啟動,系統只會在至少 60 秒執行時重新啟動應用程式。

請注意,若要讓應用程式在更新需要重新啟動計算機時重新啟動,安裝程式必須呼叫 ExitWindowsEx 函式並設定EWX_RESTARTAPPS旗標,或是已設定 SHUTDOWN_RESTARTAPPS 旗標的 InitiateShutdown 函式。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 winbase.h (包含 Windows.h)
程式庫 Kernel32.lib
DLL Kernel32.dll

另請參閱

UnregisterApplicationRestart