SHEvaluateSystemCommandTemplate-Funktion (shellapi.h)

Erzwingt eine strenge Validierung 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
);

Parameter

[in] pszCmdTemplate

Typ: PCWSTR

Eine Befehlszeile, die Parameter enthalten kann oder nicht. Wenn es sich bei den Parametern um Ersetzungsparameter handelt, 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 CoTaskMemFree aufgerufen wird.

[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 pathGetArgs immer korrekt gelesen werden 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 CoTaskMemFree aufgerufen wird.

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 mit dem Aufrufen von PathGetArgs identisch. 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 CoTaskMemFree aufgerufen wird.

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, gibt sie S_OK zurück. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Diese Funktion wird verwendet, wenn ein aufrufende Prozess unabhängig vom Ausführungskontext das deterministische Verhalten einer Befehlsvorlage benötigt. Es 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 verwendet, wenn Dateizuordnungen von HKEY_CLASSES_ROOT verarbeitet werden. Der Zweck dieser Funktion besteht darin, CreateProcess-Befehlszeilen-Exploits zu reduzieren. Es ist nicht für die Verarbeitung von Benutzereingaben konzipiert und kann bei verwendung zu diesem Zweck zu unerwarteten Fehlern führen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shellapi.h
DLL Shell32.dll
APIs ext-ms-win-shell-shell32-l1-2-2 (eingeführt in Windows 10, Version 10.0.14393)