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 会话满足执行时,不会返回句柄。 调用应用程序负责在不再需要句柄时关闭句柄。 如果未设置此标志,则会在 SHCreateProcessAsUserW 返回之前关闭进程,即使 lpProcessInformation 是有效的指针也是如此。
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
类型: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 结构的指针。 将此成员设置为有效的结构指针,并在 fMask 成员中设置SEE_MASK_NOCLOSEPROCESS标志,并且该进程将在函数返回时保持打开状态。 PROCESS_INFORMATION 结构的 hProcess 和 hThread 成员将分别保存进程和线程句柄。 将此成员设置为 NULL,该进程将在函数返回之前关闭。
言论
若要在 pszParameters中包含双引号,必须将每个标记括在一对引号中,如以下示例所示:
sei.lpParameters = "An example: \"\"\"quoted text\"\"\"";
在这种情况下,应用程序会收到三个参数:An、example:和“quoted text”。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows 2000 Professional、Windows XP [仅限桌面应用] |
支持的最低服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | shellapi.h |