Freigeben über


SHEvaluateSystemCommandTemplate-Funktion (shellapi.h)

Erzwingt die strenge Überprüfung von Parametern, die in einem Aufruf von CreateProcess oder ShellExecute verwendet werden.

Syntax

SHSTDAPI SHEvaluateSystemCommandTemplate(
  [in]            PCWSTR pszCmdTemplate,
  [out]           PWSTR  *ppszApplication,
  [out, optional] PWSTR  *ppszCommandLine,
  [out, optional] PWSTR  *ppszParameters
);

Die Parameter

[in] pszCmdTemplate

Typ: PCWSTR-

Eine Befehlszeile, die Parameter enthalten kann oder nicht. Wenn die Parameter Ersetzungsparameter sind, sollte SHEvaluateSystemCommandTemplate aufgerufen werden, bevor Parameter ersetzt wurden.

[out] ppszApplication

Typ: PWSTR*

Ein Zeiger auf den überprüften Pfad zur Anwendung. Dieser Wert sollte als lpApplication-Parameter in einem Aufruf von CreateProcess oder als lpFile-Parameter in einem Aufruf von ShellExecute übergeben werden. Diese Ressource wird mithilfe von CoTaskMemAlloc zugeordnet, und es liegt in der Verantwortung des Aufrufers, die Ressource frei zu geben, wenn sie nicht mehr benötigt wird, indem Sie CoTaskMemFree aufrufen.

[out, optional] ppszCommandLine

Typ: PWSTR*

Ein Zeiger auf eine Befehlszeilenzeichenfolgenvorlage, die in einem Aufruf von CreateProcess verwendet werden soll. Befehlszeilenparameter sollten basierend auf dieser Vorlage angegeben und dann als lpCommandLine-Parameter an CreateProcess übergeben werden. Es ist garantiert, dass es sich um ein Formular handelt, das PathGetArgs immer richtig lesen kann. Diese Ressource wird mithilfe von CoTaskMemAlloc zugeordnet, und es liegt in der Verantwortung des Aufrufers, die Ressource frei zu geben, wenn sie nicht mehr benötigt wird, indem Sie CoTaskMemFree aufrufen.

Dieser Parameter kann NULL sein, wenn diese Funktion nicht in Verbindung mit einem Aufruf von CreateProcess verwendet wird.

[out, optional] ppszParameters

Typ: PWSTR*

Ein Zeiger auf eine Befehlszeilenzeichenfolgenvorlage, die in einem Aufruf von ShellExecute verwendet werden soll. Befehlszeilenparameter sollten basierend auf dieser Vorlage angegeben und dann als lpParameters-Parameter an ShellExecute übergeben werden. Dieser Parameter ist identisch mit dem Aufrufen von PathGetArgs. Diese Ressource wird mithilfe von CoTaskMemAlloc zugeordnet, und es liegt in der Verantwortung des Aufrufers, die Ressource frei zu geben, wenn sie nicht mehr benötigt wird, indem Sie CoTaskMemFree aufrufen.

Dieser Parameter kann NULL sein, wenn diese Funktion nicht in Verbindung mit einem Aufruf von CreateProcess verwendet wird.

Rückgabewert

Typ: HRESULT-

Wenn diese Funktion erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein HRESULT-Fehlercode zurückgegeben.

Bemerkungen

Diese Funktion wird verwendet, wenn ein Aufrufprozess unabhängig vom Ausführungskontext das deterministische Verhalten einer Befehlsvorlage benötigt. Er ignoriert den aktuellen Prozessstatus, z. B. das %PATH%Verzeichnis " GetCurrentDirectory" und das übergeordnete Prozessverzeichnis.

Diese Funktion wird verwendet, wenn der Befehl hartcodiert ist.

Diese Funktion wird von ShellExecute beim Behandeln von Dateizuordnungen aus HKEY_CLASSES_ROOT verwendet. Zweck dieser Funktion ist die Reduzierung von CreateProcess-Befehlszeilen-Exploits. Sie ist nicht für die Verarbeitung von Benutzereingaben konzipiert und kann bei Verwendung zu unerwarteten Fehlern führen.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows Vista [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2008 [Nur Desktop-Apps]
Zielplattform Fenster
Header shellapi.h
Library OneCore.Lib
DLL Shell32.dll
API-Satz ext-ms-win-shell-shell32-l1-2-2 (eingeführt in Windows 10, Version 10.0.14393)