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


Структура 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, указывающую, как должно отображаться главное окно для нового процесса.

lpProcessInformation

Тип: LPPROCESS_INFORMATION

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

Замечания

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

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

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows 2000 Профессиональный, Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
заголовка shellapi.h

См. также

SHELLEXECUTEINFO