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