gpt4 book ai didi

c++ - ImpersonateLoggedOnUser 并启动使用 ocx 的新进程失败

转载 作者:太空宇宙 更新时间:2023-11-04 12:27:32 24 4
gpt4 key购买 nike

我编写了一个 C++ Windows 应用程序 (A),它使用 LogonUser、LoadUserProfile 和 ImpersonateLoggedOnUser 来获得另一个用户 (Y) 的权限。这意味着 A 开始使用登录到工作站 (X) 的用户。如果用户想要提升他的权限,他只需按一个按钮并以另一个用户身份登录,而无需退出窗口并重新登录。

现在的情况是(根据函数的返回值):LogonUser 有效,LoadUserProfile 有效,ImpersonateLoggedOnUser 也有效。

模拟之后我开始另一个进程。这个进程是一个需要OCX控件的应用程序(B)。这失败了,应用程序告诉我 .oxc 文件没有正确安装。

问题是,如果我以登录到机器 (X) 的用户身份直接启动 B,它就可以工作。如果我直接以用户 (Y) 的身份启动 B,我想使用 A 将我的权限提升到该用户,它就可以工作。

如果我以 (X) 身份登录并在资源管理器中选择“运行方式”(Y),它会起作用!

您知道我需要执行哪些步骤才能执行与 Windows 中的“运行方式”对话框相同的操作吗?

最佳答案

我不确定,但看起来模拟还不够 - 模拟仅与进程 (A) 相关,而是尝试将 ProcessAttributes/ThreadAttributes 显式设置为来自 Windows 的 ACL 的模拟用户的 CreateProcess

关于c++ - ImpersonateLoggedOnUser 并启动使用 ocx 的新进程失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1360974/

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