共用方式為


RmRestart 函式 (restartmanager.h)

重新啟動 RmShutdown 函式已關閉的應用程式和服務,並使用 RegisterApplicationRestart 函式註冊重新啟動。 此函式只能由呼叫 RmStartSession 函 式的主要安裝程式呼叫,以啟動重新啟動管理員會話。

語法

DWORD RmRestart(
  [in]           DWORD                    dwSessionHandle,
                 DWORD                    dwRestartFlags,
  [in, optional] RM_WRITE_STATUS_CALLBACK fnStatus
);

參數

[in] dwSessionHandle

現有重新啟動管理員會話的句柄。

dwRestartFlags

保留的。 此參數應該是 0。

[in, optional] fnStatus

狀態消息回呼函式的指標,用於在 RmRestart 函式執行時傳達狀態。 如果 為 NULL,則不會提供任何狀態。

傳回值

這是最近收到的錯誤。 函式可以傳回 Winerror.h 中定義的其中一個 系統錯誤碼

意義
ERROR_REQUEST_OUT_OF_SEQUENCE
776
如果在呼叫 RmShutdown 函式之前使用有效的會話句柄呼叫 RmRestart 函式,則會傳回這個錯誤值。
ERROR_FAIL_RESTART
352
無法重新啟動一或多個應用程式。 RmGetList 函式所傳回RM_PROCESS_INFO結構包含更新的狀態資訊。
ERROR_SEM_TIMEOUT
121
重新啟動管理員函式無法在配置的時間內取得登錄寫入 Mutex。 建議重新啟動系統,因為進一步使用重新啟動管理員可能會失敗。
ERROR_CANCELLED
1223
當取消作業的要求成功時 ,RmRestart 函式會傳回此錯誤值。
ERROR_BAD_ARGUMENTS
160
一或多個自變數不正確。 如果 NULL 指標或 0 傳入的參數需要非 Null 和非零值,則 Restart Manager 函式會傳回這個錯誤值。
ERROR_WRITE_FAULT
29
作業無法讀取或寫入登錄。
ERROR_OUTOFMEMORY
14
重新啟動管理員作業無法完成,因為沒有足夠的記憶體可用。
ERROR_INVALID_HANDLE
6
提供的句柄沒有重新啟動管理員會話。
ERROR_SUCCESS
0
函式會成功並傳回 。

備註

呼叫 RmRestart 函式之後,RmGetList 函式所傳回的RM_PROCESS_INFO結構會包含更新的狀態資訊。

重新啟動管理員會遵守分隔不同使用者或終端機會話的許可權。 以 LocalSystem 權限作為服務執行的安裝程式,無法關閉或重新啟動其他使用者或終端機會話中的任何應用程式。 安裝程式應該實作自定義方法,以關閉並重新啟動在其他會話中執行的應用程式。 其中一種方法是在另一個會話中啟動新的安裝程式程式,以執行關機和重新啟動作業。

當主控台應用程式由重新啟動管理員關閉並重新啟動時,應用程式會在新的控制台中重新啟動。

即使 RmShutdown 函式傳回錯誤,安裝程式應該一律使用 RmRestart 函式重新啟動應用程式和服務,指出並非所有應用程式和服務都可以關閉。

RmRestart 函式不會重新啟動任何以提升許可權執行的應用程式。 即使應用程式已由重新啟動管理員關閉也一樣。

RmRestart 函式不會重新啟動任何未以目前登入使用者身分執行的應用程式。 即使應用程式已由重新啟動管理員關閉也一樣。 例如, RmRestart 函式不會重新啟動以執行身 分命令啟動 的應用程式,該命令不會以目前登入的使用者身分執行。 這些應用程式必須手動重新啟動。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 restartmanager.h
程式庫 Rstrtmgr.lib
Dll Rstrtmgr.dll

另請參閱

RegisterApplicationRestart

RmCancelCurrentTask

RmShutdown