InitiateShutdownA 函式 (winreg.h)
起始指定電腦的關機和重新啟動,並重新啟動已註冊重新啟動的任何應用程式。
語法
DWORD InitiateShutdownA(
[in, optional] LPSTR lpMachineName,
[in, optional] LPSTR lpMessage,
[in] DWORD dwGracePeriod,
[in] DWORD dwShutdownFlags,
[in] DWORD dwReason
);
參數
[in, optional] lpMachineName
要關閉的電腦名稱。 如果此參數的值是 NULL,本機電腦就會關閉。
[in, optional] lpMessage
要顯示在互動式關機對話框中的訊息。
[in] dwGracePeriod
關閉電腦之前要等候的秒數。 如果此參數的值是零,則會立即關閉電腦。 此值限製為 MAX_SHUTDOWN_TIMEOUT。
如果此參數的值大於零,而 dwShutdownFlags 參數會指定旗標 SHUTDOWN_GRACE_OVERRIDE,則函式會失敗並傳回錯誤碼 ERROR_BAD_ARGUMENTS。
[in] dwShutdownFlags
指定關機選項的一或多個位旗標。 定義下列值。
值 | 意義 |
---|---|
|
所有工作階段都會強制註銷。 如果未設定此旗標,而且目前使用者以外的使用者已登入 lpMachineName 參數所指定的電腦,此函式會失敗,且傳回值為 ERROR_SHUTDOWN_USERS_LOGGED_ON。 |
|
指定原始工作階段已強制註銷。 如果未設定此旗標,則原始會話會以互動方式關閉,因此即使函式成功傳回,也不會保證關機。 |
|
覆寫寬限期,讓計算機立即關閉。 |
|
從在 Windows 8 上執行的 InitiateShutdown 開始,您必須在此數據表中包含一或多個旗標的 SHUTDOWN_HYBRID 旗標,以指定關機的選項。
從 Windows 8 開始,如果SHUTDOWN_HYBRID旗標不存在,則 InitiateShutdown 一律會起始完整系統關機。 |
|
計算機會在啟動關機之前安裝任何更新。 |
|
計算機已關閉,但未關閉或重新啟動。 |
|
計算機已關閉並關閉電源。 |
|
計算機已關閉並重新啟動。 |
|
系統會使用 ExitWindowsEx 函式搭配 EWX_RESTARTAPPS 旗標重新啟動。 這會使用 RegisterApplicationRestart 函式重新啟動,重新啟動任何已註冊的應用程式。 |
[in] dwReason
起始關機的原因。 此參數必須是其中一個 系統關機原因碼。 如果此參數為零,則預設值為未定義的關機,記錄為「找不到此原因的標題」。 根據預設,它也是非計劃性關機。 視系統設定方式而定,非計劃性關機會觸發建立包含系統狀態信息的檔案,這可能會延遲關機。 因此,請勿對此參數使用零。
傳回值
如果函式成功,它會傳回 ERROR_SUCCESS。
如果函式失敗,它會傳回下列其中一個錯誤碼。
傳回碼 | Description |
---|---|
|
呼叫端沒有執行這項作業所需的許可權 (SE_SHUTDOWN_PRIVILEGE 或SE_REMOTE_SHUTDOWN_PRIVILEGE) 。 |
|
指定的電腦不存在或無法存取。 |
|
指定的電腦名稱不是有效的電腦名稱。 |
|
指定的電腦不支援關機介面。 |
|
傳遞了無效的參數集。 這包括下列組合。
|
|
已於指定的電腦上啟動關機。 |
|
已排程指定計算機的關機,但尚未啟動。 若要讓此函式成功,必須設定 SHUTDOWN_GRACE_OVERRIDE 旗標。 |
|
目前使用者以外的一或多個使用者會登入指定的計算機上,而且未設定 SHUTDOWN_FORCE_OTHERS 旗標。 |
備註
若要關閉本機計算機,呼叫線程必須具有SE_SHUTDOWN_NAME許可權。 若要關閉遠端計算機,呼叫線程必須在遠端電腦上具有SE_REMOTE_SHUTDOWN_NAME許可權。 根據預設,用戶可以在登入的計算機上啟用SE_SHUTDOWN_NAME許可權,而系統管理員可以在遠端電腦上啟用SE_REMOTE_SHUTDOWN_NAME許可權。 如需詳細資訊,請參閱 使用特殊許可權執行。
失敗的常見原因包括無效或無法存取的計算機名稱或許可權不足。 如果指定的計算機上已經進行關機,就會傳回錯誤ERROR_SHUTDOWN_IN_PROGRESS。 如果已啟用快速使用者切換,但未登入使用者,則可以傳回錯誤ERROR_NOT_READY。
非零的傳回值不表示註銷是或將會成功。 關機是異步進程,而且在 API 呼叫傳回或完全不傳回之後可能會發生。 即使逾時值為零,關機仍可由應用程式、服務或甚至系統中止。 非零的傳回值表示許可權和參數的驗證成功,而且系統接受關機要求。
注意
winreg.h 標頭會將 InitiateShutdown 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [傳統型應用程式 |UWP 應用程式] |
最低支援的伺服器 | Windows Server 2008 [傳統型應用程式 |UWP 應用程式] |
目標平台 | Windows |
標頭 | winreg.h (包含 Windows.h) |
程式庫 | Advapi32.lib |
Dll | Advapi32.dll |