共用方式為


SHEvaluateSystemCommandTemplate 函式 (shellapi.h)

強制嚴格驗證 呼叫 CreateProcessShellExecute 時所使用的參數。

語法

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 和父進程目錄。

當命令硬式編碼時,會使用此函式。

處理來自 HKEY_CLASSES_ROOT 的檔案關聯時 ,ShellExecute 會使用此函式。 此函式的目的是減少 CreateProcess 命令行惡意探索。 它並非設計來處理使用者輸入,而且用於該用途可能會產生非預期的失敗。

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 shellapi.h
Dll Shell32.dll
API 集合 ext-ms-win-shell32-l1-2-2 (在 Windows 10 10.0.14393 版中引進)