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 中定義的其中一個 系統錯誤碼 。
值 | 意義 |
---|---|
|
如果在呼叫 RmShutdown 函式之前使用有效的會話句柄呼叫 RmRestart 函式,則會傳回這個錯誤值。 |
|
無法重新啟動一或多個應用程式。 RmGetList 函式所傳回RM_PROCESS_INFO結構包含更新的狀態資訊。 |
|
重新啟動管理員函式無法在配置的時間內取得登錄寫入 Mutex。 建議重新啟動系統,因為進一步使用重新啟動管理員可能會失敗。 |
|
當取消作業的要求成功時 ,RmRestart 函式會傳回此錯誤值。 |
|
一或多個自變數不正確。 如果 NULL 指標或 0 傳入的參數需要非 Null 和非零值,則 Restart Manager 函式會傳回這個錯誤值。 |
|
作業無法讀取或寫入登錄。 |
|
重新啟動管理員作業無法完成,因為沒有足夠的記憶體可用。 |
|
提供的句柄沒有重新啟動管理員會話。 |
|
函式會成功並傳回 。 |
備註
呼叫 RmRestart 函式之後,RmGetList 函式所傳回的RM_PROCESS_INFO結構會包含更新的狀態資訊。
重新啟動管理員會遵守分隔不同使用者或終端機會話的許可權。 以 LocalSystem 權限作為服務執行的安裝程式,無法關閉或重新啟動其他使用者或終端機會話中的任何應用程式。 安裝程式應該實作自定義方法,以關閉並重新啟動在其他會話中執行的應用程式。 其中一種方法是在另一個會話中啟動新的安裝程式程式,以執行關機和重新啟動作業。
當主控台應用程式由重新啟動管理員關閉並重新啟動時,應用程式會在新的控制台中重新啟動。
即使 RmShutdown 函式傳回錯誤,安裝程式應該一律使用 RmRestart 函式重新啟動應用程式和服務,指出並非所有應用程式和服務都可以關閉。
RmRestart 函式不會重新啟動任何以提升許可權執行的應用程式。 即使應用程式已由重新啟動管理員關閉也一樣。
RmRestart 函式不會重新啟動任何未以目前登入使用者身分執行的應用程式。 即使應用程式已由重新啟動管理員關閉也一樣。 例如, RmRestart 函式不會重新啟動以執行身 分命令啟動 的應用程式,該命令不會以目前登入的使用者身分執行。 這些應用程式必須手動重新啟動。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | restartmanager.h |
程式庫 | Rstrtmgr.lib |
Dll | Rstrtmgr.dll |