我试图将一些重复的安装任务封装到一个私有(private)安装程序中。该程序供内部使用,为工业用户设置定制的单一用途系统。我需要管理员权限来为我们的环境调整一些 Windows 设置,然后我需要为要使用的应用程序软件包设置一些当前用户设置。
当管理员权限不再时,在其 list 中使用 requireAdministrator 的 Windows 程序(使用纯 C,使用 Visual Studio 2017 创建)是否有可能恢复到启动该程序的用户需要吗?我已经在 linux 中看到了这一点,但无法找到在 Windows 中完成的任何示例(甚至提及)。帮助?请问?
最佳答案
你不知道。
前一段时间给出的方法是跟踪资源管理器的运行实例,并在其中生成一个远程线程(使用 CreateRemoteThread)来执行您想要的操作。但是 CreateRemoteTherad 很敏感,如果资源管理器没有运行怎么办?
如果您知道用户名,则可以使用 CreateService() 创建以该用户身份运行的服务,并使用 ServiceStart() 启动它,但这是它自己的痛苦,现在代码必须处理无法访问桌面的问题。让代码以用户身份在桌面上运行需要深入挖掘未记录的内容。
正确的设计是使用两个可执行文件,第一个与 asInvoker 一起启动,第二个与 requireAdministrator 使用 API 调用 ShellExecuteEx,等待它完成,检查退出代码,并在成功时执行各个用户步骤。
关于c - 在 list 中使用 requireAdministrator 恢复为 Windows 程序中的普通用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49985358/