共用方式為


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

指定關機選項的一或多個位旗標。 定義下列值。

意義
SHUTDOWN_FORCE_OTHERS
0x00000001 (0x1)
所有工作階段都會強制註銷。 如果未設定此旗標,而且目前使用者以外的使用者已登入 lpMachineName 參數所指定的電腦,此函式會失敗,且傳回值為 ERROR_SHUTDOWN_USERS_LOGGED_ON
SHUTDOWN_FORCE_SELF
0x00000002 (0x2)
指定原始工作階段已強制註銷。 如果未設定此旗標,則原始會話會以互動方式關閉,因此即使函式成功傳回,也不會保證關機。
SHUTDOWN_GRACE_OVERRIDE
0x00000020 (0x20)
覆寫寬限期,讓計算機立即關閉。
SHUTDOWN_HYBRID
0x00000200 (0x200)
從在 Windows 8 上執行的 InitiateShutdown 開始,您必須在此數據表中包含一或多個旗標的 SHUTDOWN_HYBRID 旗標,以指定關機的選項。

從 Windows 8 開始,如果SHUTDOWN_HYBRID旗標不存在,則 InitiateShutdown 一律會起始完整系統關機。

SHUTDOWN_INSTALL_UPDATES
0x00000040 (0x40)
計算機會在啟動關機之前安裝任何更新。
SHUTDOWN_NOREBOOT
0x00000010 (0x10)
計算機已關閉,但未關閉或重新啟動。
SHUTDOWN_POWEROFF
0x00000008 (0x8)
計算機已關閉並關閉電源。
SHUTDOWN_RESTART
0x00000004 (0x4)
計算機已關閉並重新啟動。
SHUTDOWN_RESTARTAPPS
0x00000080 (0x80)
系統會使用 ExitWindowsEx 函式搭配 EWX_RESTARTAPPS 旗標重新啟動。 這會使用 RegisterApplicationRestart 函式重新啟動,重新啟動任何已註冊的應用程式。

[in] dwReason

起始關機的原因。 此參數必須是其中一個 系統關機原因碼。 如果此參數為零,則預設值為未定義的關機,記錄為「找不到此原因的標題」。 根據預設,它也是非計劃性關機。 視系統設定方式而定,非計劃性關機會觸發建立包含系統狀態信息的檔案,這可能會延遲關機。 因此,請勿對此參數使用零。

傳回值

如果函式成功,它會傳回 ERROR_SUCCESS

如果函式失敗,它會傳回下列其中一個錯誤碼。

傳回碼 Description
ERROR_ACCESS_DENIED
呼叫端沒有執行這項作業所需的許可權 (SE_SHUTDOWN_PRIVILEGE 或SE_REMOTE_SHUTDOWN_PRIVILEGE) 。
ERROR_BAD_NETPATH
指定的電腦不存在或無法存取。
ERROR_INVALID_COMPUTERNAME
指定的電腦名稱不是有效的電腦名稱。
ERROR_INVALID_FUNCTION
指定的電腦不支援關機介面。
ERROR_INVALID_PARAMETER
傳遞了無效的參數集。 這包括下列組合。
  • lpMachineName 參數會指定遠端計算機,而 dwShutdownFlags 參數不會指定SHUTDOWN_FORCE_SELF
  • dwGracePeriod 的值大於零,而 dwShutdownFlags 參數不會指定SHUTDOWN_FORCE_SELF
  • dwGracePeriod 的值大於零,而 dwShutdownFlags 參數會指定SHUTDOWN_GRACE_OVERRIDE
ERROR_SHUTDOWN_IN_PROGRESS
已於指定的電腦上啟動關機。
ERROR_SHUTDOWN_IS_SCHEDULED
已排程指定計算機的關機,但尚未啟動。 若要讓此函式成功,必須設定 SHUTDOWN_GRACE_OVERRIDE 旗標。
ERROR_SHUTDOWN_USERS_LOGGED_ON
目前使用者以外的一或多個使用者會登入指定的計算機上,而且未設定 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

另請參閱

關閉