gpt4 book ai didi

c++ - CreateProcessAsUser() 不工作

转载 作者:可可西里 更新时间:2023-11-01 11:31:53 25 4
gpt4 key购买 nike

我正在尝试使用我的服务启动 GUI 应用程序。我在 VS2012 上开发了该服务并在 Windows 7 上运行。但是 CreateProcessAsUser 函数即使成功返回也不会启动应用程序。以下是我的代码:

PHANDLE hToken = NULL;
WTSQueryUserToken (WTSGetActiveConsoleSessionId (), hToken) ;

if( !CreateProcessAsUser( hToken,
NULL, // No module name (use command line)
pPath, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
0, // No creation flags
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi ) // Pointer to PROCESS_INFORMATION structure
)

可能是什么问题?

谢谢,公里。

最佳答案

WTSQueryUserToken() 中检索到用户 token 后,调用 DuplicateTokenEx() 将其转换为主 token ,并将该 token 传递给 CreateProcessAsUser() 。您还需要通过 STARTUPINFO 结构指定“winsta0\default”(使用:“winsta0\\default”)桌面。您还应该使用相同的 token 调用 CreateEnvironmentBlock(),并将该环境也传递给 CreateProcessAsUser()

关于c++ - CreateProcessAsUser() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18628985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com