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 返回时,进程将保持打开状态。 PROCESS_INFORMATION 结构的 hProcess 和 hThread 成员分别持有进程和线程句柄。 此标志通常设置为允许应用程序了解使用 SHCreateProcessAsUserW 创建的进程何时终止。 在某些情况下,例如通过 DDE 会话满足执行要求时,不会返回任何句柄。 调用应用程序负责在不再需要句柄时将其关闭。 如果未设置此标志,则即使 lpProcessInformation 是有效的指针,进程也会在 SHCreateProcessAsUserW 返回之前关闭。
SEE_MASK_NO_CONSOLE
为新进程创建控制台,而不是让其继承父进程的控制台。 它等效于将 CREATE_NEW_CONSOLE 标志与 CreateProcess 配合使用。
SEE_MASK_UNICODE
指示 Unicode 应用程序。
hwnd
类型:HWND
父窗口句柄。
pszFile
类型: LPCWSTR
指向以 null 结尾的 Unicode 字符串的指针,该字符串指定 SHCreateProcessAsUserW 将对其执行 runas 谓词指定的操作的可执行文件。 文件的 类必须支持 runas 谓词。
pszParameters
类型: LPCWSTR
指向包含应用程序参数的以 null 结尾的 Unicode 字符串的指针。 参数必须用空格分隔。
pszCurrentDirectory
类型: LPCWSTR
包含当前目录的以 null 结尾的 Unicode 字符串。
hUserToken
类型: 句柄
可用于表示特定用户的 访问令牌 。 当这些文件夹有多个用户被视为属于单个用户时,需要此权限。 调用应用程序必须具有特定用户的相应安全权限,包括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 结构的指针,该结构接收有关新进程的信息。 将此成员设置为有效的结构指针,并在 fMask 成员中设置SEE_MASK_NOCLOSEPROCESS标志,当函数返回时,进程将保持打开状态。 然后 ,PROCESS_INFORMATION 结构的 hProcess 和 hThread 成员将分别持有进程和线程句柄。 将此成员设置为 NULL,进程将在函数返回之前关闭。
注解
若要在 pszParameters 中包含双引号,必须将每个标记括在一对引号中,如以下示例所示:
sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
在本例中,应用程序接收三个参数:An、example:和“带引号的文本”。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版、Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | shellapi.h |