Структура 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 |