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


Структура SHCREATEPROCESSINFOW (shellapi.h)

[SHCreateProcessAsUserW больше не реализован в Windows XP и более поздних версиях.]

Содержит сведения, необходимые SHCreateProcessAsUserW для создания процесса.

Синтаксис

typedef struct _SHCREATEPROCESSINFOW {
  DWORD                 cbSize;
  ULONG                 fMask;
  HWND                  hwnd;
  LPCWSTR               pszFile;
  LPCWSTR               pszParameters;
  LPCWSTR               pszCurrentDirectory;
  HANDLE                hUserToken;
  LPSECURITY_ATTRIBUTES lpProcessAttributes;
  LPSECURITY_ATTRIBUTES lpThreadAttributes;
  BOOL                  bInheritHandles;
  DWORD                 dwCreationFlags;
  LPSTARTUPINFOW        lpStartupInfo;
  LPPROCESS_INFORMATION lpProcessInformation;
} SHCREATEPROCESSINFOW, *PSHCREATEPROCESSINFOW;

Члены

cbSize

Тип: DWORD

Размер данной структуры (в байтах).

fMask

Тип: ULONG

Массив флагов, указывающий содержимое и допустимость других элементов структуры. Это может быть сочетание следующих значений.

SEE_MASK_CLASSKEY

Используйте раздел реестра класса файла.

SEE_MASK_CLASSNAME

Используйте имя класса файла.

SEE_MASK_CONNECTNETDRV

Проверьте общую папку и подключитесь к букве диска. Элемент pszFile — это UNC-путь к файлу в сети.

SEE_MASK_DOENVSUBST

Разверните все переменные среды.

SEE_MASK_FLAG_DDEWAIT

Дождитесь завершения диалога DDE, прежде чем вернуться.

SEE_MASK_FLAG_NO_UI

Не отображайте окно сообщения об ошибке, если произошла ошибка.

SEE_MASK_HMONITOR

Используйте этот флаг при указании монитора в мультимониторных системах.

SEE_MASK_NOCLOSEPROCESS

Приложение закроет процесс. Если элемент lpProcessInformation является допустимым указателем PROCESS_INFORMATION и задан SEE_MASK_NOCLOSEPROCESS , процесс останется открытым при возврате SHCreateProcessAsUserW . Элементы hProcess и hThreadструктуры PROCESS_INFORMATION содержат дескриптора процесса и потока соответственно. Этот флаг обычно устанавливается, чтобы позволить приложению узнать, когда завершается процесс, созданный с помощью SHCreateProcessAsUserW . В некоторых случаях, например при выполнении с помощью диалога DDE, дескриптор не возвращается. Вызывающее приложение отвечает за закрытие дескриптора, когда он больше не нужен. Если этот флаг не установлен, процесс будет закрыт до возврата SHCreateProcessAsUserW , даже если lpProcessInformation является допустимым указателем.

SEE_MASK_NO_CONSOLE

Создайте консоль для нового процесса, а не наследование родительской консоли. Это эквивалентно использованию флага CREATE_NEW_CONSOLE с CreateProcess.

SEE_MASK_UNICODE

Указывает приложение Юникода.

hwnd

Тип: HWND

Дескриптор родительского окна.

pszFile

Тип: LPCWSTR

Указатель на строку Юникода, завершающуюся null, которая указывает исполняемый файл, в котором SHCreateProcessAsUserW выполнит действие, указанное командой runas . Команда runas должна поддерживаться классом файла.

Примечание Если путь не включен в имя файла, предполагается, что используется текущий каталог.
 

pszParameters

Тип: LPCWSTR

Указатель на строку Юникода, завершающуюся null, которая содержит параметры приложения. Параметры должны быть разделены пробелами.

pszCurrentDirectory

Тип: LPCWSTR

Строка Юникода, заканчивающаяся null, которая содержит текущий каталог.

hUserToken

Тип: HANDLE

Маркер доступа, который можно использовать для представления определенного пользователя. Он необходим, если для этих папок есть несколько пользователей, которые считаются принадлежащими одному пользователю. Вызывающее приложение должно иметь соответствующие привилегии безопасности для конкретного пользователя, включая TOKEN_QUERY и TOKEN_IMPERSONATE, а куст реестра пользователя должен быть подключен в данный момент. Дополнительные сведения о проблемах управления доступом см. в разделе контроль доступа.

lpProcessAttributes

Тип: LPSECURITY_ATTRIBUTES

Указатель на структуру SECURITY_ATTRIBUTES с дескриптором безопасности для нового процесса. Он также указывает, можно ли наследовать дочерний процесс. Если для этого параметра задано значение NULL, процесс будет иметь дескриптор безопасности по умолчанию и дескриптор не может быть унаследован.

Предупреждение системы безопасности: Неправильное использование дескриптора безопасности может поставить под угрозу безопасность приложения. Дополнительные сведения см. в разделе SECURITY_ATTRIBUTES.

lpThreadAttributes

Тип: LPSECURITY_ATTRIBUTES

Указатель на структуру SECURITY_ATTRIBUTES с дескриптором безопасности для нового потока. Он также указывает, можно ли наследовать дочерний процесс. Если для этого параметра задано значение NULL, процесс будет иметь дескриптор безопасности по умолчанию и дескриптор не может быть унаследован.

Предупреждение системы безопасности: Неправильное использование дескриптора безопасности может поставить под угрозу безопасность приложения. Дополнительные сведения см. в разделе SECURITY_ATTRIBUTES.

bInheritHandles

Тип: BOOL

Индикатор того, наследует ли новый процесс дескриптора от вызывающего процесса. Если задано значение TRUE, каждый наследуемый открытый дескриптор в вызывающем процессе наследуется новым процессом. Унаследованные дескрипторы имеют те же значения и привилегии доступа, что и исходные дескрипторы.

dwCreationFlags

Тип: DWORD

Флаги, управляющие созданием процесса и класса приоритета. Список доступных флагов см. в разделе CreateProcessAsUser.

lpStartupInfo

Тип: LPSTARTUPINFOW

Указатель на структуру STARTUPINFO, которая указывает, как должно выглядеть окно main для нового процесса.

lpProcessInformation

Тип: LPPROCESS_INFORMATION

Указатель на структуру PROCESS_INFORMATION , получающую сведения о новом процессе. Установите для этого элемента допустимый указатель структуры и установите флаг SEE_MASK_NOCLOSEPROCESS в элементе fMask , и процесс останется открытым при возврате функции. Затем элементы hProcess и hThreadструктуры PROCESS_INFORMATION будут содержать дескрипторы процесса и потока соответственно. Присвойте этому члену значение NULL, и процесс будет закрыт перед возвратом функции.

Комментарии

Чтобы включить двойные кавычки в pszParameters, необходимо заключить каждую метку в пару кавычек, как показано в следующем примере:

sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";

В этом случае приложение получает три параметра: An, example:, и "quoted text".

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional, Windows XP [только классические приложения]
Минимальная версия сервера Windows Server 2003 [только классические приложения]
Верхняя часть shellapi.h

См. также раздел

SHELLEXECUTEINFO