首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateProcessAsUser hToken为零

CreateProcessAsUser hToken为零
EN

Stack Overflow用户
提问于 2020-04-13 13:08:05
回答 1查看 209关注 0票数 0

我正在创建一个应用程序(名称AppRunner),它将使用winapi运行一个可执行文件(名称EXE)。

在AppRunner中,我使用CreateProcessAsUser来运行EXE,该方法使用hToken (用户令牌)。

当用户系统在会话0中执行AppRunner时,它将成功地获取用户令牌(带有控制台会话id的WTSQueryUserToken),一切都将正常工作。

但是,当AppRunner将由在session>0中登录的用户执行时,它将无法获得用户令牌。

我注意到,当使用CreateProcessAsUser调用hToken=0时,在用户会话中登录的用户下执行EXE (>0)。

我可以假设使用hToken =0调用CreateProcessAsUser将在用户会话中登录的用户下执行EXE吗?我在CreateProcessAsUser页面中没有找到任何有关它的文档。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-14 06:15:41

BTW,如果其他人遇到这种情况: CreateProcessAsUser with hToken=0确实将创建一个与当前进程的用户相同的进程,但是,CreateEnvironmentBlock将创建一个具有默认值的环境,这意味着,例如,appdata文件夹将指向默认用户,而不是当前用户的appdata文件夹。

有两个解决办法:

  1. 在调用CreateEnvironmentBlock时继承父进程(AppRunner)环境。然后,APPDATA环境变量将指向当前用户的appdata文件夹。但是USERPROFILE仍然使用GetCurrentProcessToken指向USERPROFILE父进程(AppRunner)令牌,然后将此令牌传递给CreateEnvironmentBlock。然后APPDATAUSERPROFILE环境变量都指向当前用户.
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61188590

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档