強制嚴格驗證呼叫 CreateProcess 或 ShellExecute 中使用的參數。
語法
SHSTDAPI SHEvaluateSystemCommandTemplate(
[in] PCWSTR pszCmdTemplate,
[out] PWSTR *ppszApplication,
[out, optional] PWSTR *ppszCommandLine,
[out, optional] PWSTR *ppszParameters
);
參數
[in] pszCmdTemplate
類型: PCWSTR
命令列,其中可能包含參數,也可能不包含參數。 如果參數是替代參數,則應該在取代參數之前呼叫 SHEvaluateSystemCommandTemplate 。
[out] ppszApplication
類型: PWSTR*
指向應用程式已驗證路徑的指標。 此值應該在呼叫 CreateProcess 時傳遞為 lpApplication 參數,或在呼叫 ShellExecute 時傳遞為 lpFile 參數。 此資源是使用 CoTaskMemAlloc 配置,呼叫端負責在不再需要資源時呼叫 CoTaskMemFree 來釋放資源。
[out, optional] ppszCommandLine
類型: PWSTR*
命令列字串範本的指標,要用於呼叫 CreateProcess 。 命令列參數應該根據此範本指定,然後以 lpCommandLine 參數的形式傳遞至 CreateProcess。 保證是 PathGetArgs 一律可以正確讀取的形式。 此資源是使用 CoTaskMemAlloc 配置,呼叫端負責在不再需要資源時呼叫 CoTaskMemFree 來釋放資源。
如果此函式未與呼叫 CreateProcess 相關聯,則此參數可以是 Null。
[out, optional] ppszParameters
類型: PWSTR*
命令列字串範本的指標,要用於呼叫 ShellExecute。 命令列參數應該根據此範本指定,然後以 lpParameters 參數的形式傳遞給 ShellExecute。 此參數與呼叫 PathGetArgs 相同。 此資源是使用 CoTaskMemAlloc 配置,呼叫端負責在不再需要資源時呼叫 CoTaskMemFree 來釋放資源。
如果此函式未與呼叫 CreateProcess 相關聯,則此參數可以是 Null。
返回值
類型:HRESULT
如果此函式成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。
備註
當呼叫處理程序需要命令範本的決定性行為時,會使用此函式,而不論執行內容為何。 它會忽略目前的進程狀態,例如 %PATH%、 GetCurrentDirectory 和父進程目錄。
當命令是硬式編碼時,會使用此函式。
ShellExecute 在處理來自 HKEY_CLASSES_ROOT 的檔案關聯時會使用此函式。 此函式的目的是減少 CreateProcess 命令列惡意探索。 它不是為處理使用者輸入而設計的,如果用於此目的,可能會產生非預期的失敗。
需求
| Requirement | 價值觀 |
|---|---|
| 最低支援的用戶端 | Windows Vista [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows Server 2008 [僅限傳統型應用程式] |
| 目標平臺 | 窗戶 |
| Header | shellapi.h |
| Library | OneCore.Lib |
| DLL | Shell32.dll |
| API 集 | ext-ms-win-shell-shell32-l1-2-2 (Windows 10 版本 10.0.14393 中引進) |