SHCREATEPROCESSINFOW structure (shellapi.h)
[SHCreateProcessAsUserW is no longer implemented in Windows XP or later versions.]
Contains the information needed by SHCreateProcessAsUserW to create a process.
Syntax
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;
Members
cbSize
Type: DWORD
The size, in bytes, of this structure.
fMask
Type: ULONG
An array of flags that indicates the content and validity of the other structure members. This can be a combination of the following values.
SEE_MASK_CLASSKEY
Use the file's class registry key.
SEE_MASK_CLASSNAME
Use the file's class name.
SEE_MASK_CONNECTNETDRV
Validate the share and connect to a drive letter. The pszFile member is a UNC path of a file on a network.
SEE_MASK_DOENVSUBST
Expand any environment variables.
SEE_MASK_FLAG_DDEWAIT
Wait for the DDE conversation to terminate before returning.
SEE_MASK_FLAG_NO_UI
Do not display an error message box if an error occurs.
SEE_MASK_HMONITOR
Use this flag when specifying a monitor on multimonitor systems.
SEE_MASK_NOCLOSEPROCESS
The application will close the process. If the lpProcessInformation member is a valid PROCESS_INFORMATION pointer, and SEE_MASK_NOCLOSEPROCESS is set, the process will remain open when SHCreateProcessAsUserW returns. The hProcess and hThread members of the PROCESS_INFORMATION structure hold the process and thread handles, respectively. This flag is typically set to allow an application to find out when a process created with SHCreateProcessAsUserW terminates. In some cases, such as when execution is satisfied through a DDE conversation, no handle will be returned. The calling application is responsible for closing the handle when it is no longer needed. If this flag is not set, the process will be closed before SHCreateProcessAsUserW returns, even if lpProcessInformation is a valid pointer.
SEE_MASK_NO_CONSOLE
Create a console for the new process instead of having it inherit the parent's console. It is equivalent to using a CREATE_NEW_CONSOLE flag with CreateProcess.
SEE_MASK_UNICODE
Indicates a Unicode application.
hwnd
Type: HWND
A parent window handle.
pszFile
Type: LPCWSTR
A pointer to a null-terminated Unicode string that specifies the executable file on which SHCreateProcessAsUserW will perform the action specified by the runas verb. The runas verb must be supported by the file's class.
pszParameters
Type: LPCWSTR
A pointer to a null-terminated Unicode string containing the application parameters. The parameters must be separated by spaces.
pszCurrentDirectory
Type: LPCWSTR
A null-terminated Unicode string that contains the current directory.
hUserToken
Type: HANDLE
An Access token that can be used to represent a particular user. It is needed when there are multiple users for those folders that are treated as belonging to a single user. The calling application must have appropriate security privileges for the particular user, including TOKEN_QUERY and TOKEN_IMPERSONATE, and the user's registry hive must be currently mounted. For further discussion of access control issues, see Access Control.
lpProcessAttributes
Type: LPSECURITY_ATTRIBUTES
A pointer to a SECURITY_ATTRIBUTES structure with the security descriptor for the new process. It also specifies whether a child process can be inherited. If this parameter is set to NULL, the process will have a default security descriptor and the handle cannot be inherited.
Security Warning: Using a security descriptor incorrectly can compromise the security of your application. For more information, see SECURITY_ATTRIBUTES.
lpThreadAttributes
Type: LPSECURITY_ATTRIBUTES
A pointer to a SECURITY_ATTRIBUTES structure with the security descriptor for the new thread. It also specifies whether a child process can be inherited. If this parameter is set to NULL, the process will have a default security descriptor and the handle cannot be inherited.
Security Warning: Using a security descriptor incorrectly can compromise the security of your application. For more information, see SECURITY_ATTRIBUTES.
bInheritHandles
Type: BOOL
An indicator for whether the new process inherits handles from the calling process. If set to TRUE, each inheritable open handle in the calling process is inherited by the new process. Inherited handles have the same value and access privileges as the original handles.
dwCreationFlags
Type: DWORD
Flags that control the creation of the process and the priority class. For a list of the available flags, see CreateProcessAsUser.
lpStartupInfo
Type: LPSTARTUPINFOW
A pointer to a STARTUPINFO structure that specifies how the main window for the new process should appear.
lpProcessInformation
Type: LPPROCESS_INFORMATION
A pointer to a PROCESS_INFORMATION structure that receives information about the new process. Set this member to a valid structure pointer, and set the SEE_MASK_NOCLOSEPROCESS flag in the fMask member, and the process will remain open when the function returns. The PROCESS_INFORMATION structure's hProcess and hThread members will then hold the process and thread handles, respectively. Set this member to NULL, and the process will be closed before the function returns.
Remarks
To include double quotation marks in pszParameters, you must enclose each mark in a pair of quotation marks, as in the following example:
sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
In this case, the application receives three parameters: An, example:, and "quoted text".
Requirements
Requirement | Value |
---|---|
Minimum supported client | Windows 2000 Professional, Windows XP [desktop apps only] |
Minimum supported server | Windows Server 2003 [desktop apps only] |
Header | shellapi.h |