Поделиться через


Функция SHEvaluateSystemCommandTemplate (shellapi.h)

Обеспечивает строгую проверку параметров, используемых при вызове 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*

Указатель на проверенный путь к приложению. Это значение должно передаваться как параметр lpApplication при вызове CreateProcess или как параметр lpFile в вызове ShellExecute. Этот ресурс выделяется с помощью CoTaskMemAlloc, и вызывающий объект отвечает за освобождение ресурса, когда он больше не нужен, путем вызова CoTaskMemFree.

[out, optional] ppszCommandLine

Тип: PWSTR*

Указатель на шаблон строки командной строки, используемый при вызове CreateProcess. Параметры командной строки должны быть указаны на основе этого шаблона, а затем переданы в createProcess в качестве параметра lpCommandLine. Он гарантированно будет иметь форму, которую PathGetArgs всегда может читать правильно. Этот ресурс выделяется с помощью CoTaskMemAlloc, и вызывающий объект отвечает за освобождение ресурса, когда он больше не нужен, путем вызова CoTaskMemFree.

Этот параметр может иметь значение NULL , если эта функция не используется в связи с вызовом CreateProcess.

[out, optional] ppszParameters

Тип: PWSTR*

Указатель на шаблон командной строки для использования в вызове ShellExecute. Параметры командной строки должны быть заданы на основе этого шаблона, а затем переданы в качестве параметра lpParametersв ShellExecute. Этот параметр идентичен вызову PathGetArgs. Этот ресурс выделяется с помощью CoTaskMemAlloc, и вызывающий объект отвечает за освобождение ресурса, когда он больше не нужен, путем вызова CoTaskMemFree.

Этот параметр может иметь значение NULL , если эта функция не используется в связи с вызовом CreateProcess.

Возвращаемое значение

Тип: HRESULT

Если эта функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .

Комментарии

Эта функция используется, когда вызывающему процессу требуется детерминированное поведение из шаблона команды независимо от контекста выполнения. Он игнорирует текущее состояние процесса, например %PATH%, GetCurrentDirectory и каталог родительского процесса.

Эта функция используется при жестком коде команды.

Эта функция используется ShellExecute при обработке сопоставлений файлов из HKEY_CLASSES_ROOT. Эта функция предназначена для уменьшения числа эксплойтов командной строки CreateProcess . Он не предназначен для обработки пользовательских входных данных и при использовании для этой цели может привести к непредвиденным сбоям.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header shellapi.h
DLL Shell32.dll
Набор API ext-ms-win-shell-shell32-l1-2-2 (представлено в Windows 10 версии 10.0.14393)