c - 在 list 中使用 requireAdministrator 恢复为 Windows 程序中的普通用户?

标签 c windows security winapi

我试图将一些重复的安装任务封装到一个私有(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/

相关文章:

c - 将数字输入动态数组

c - 函数中的 malloc 全局数组

Windows 7 的 PHP 4/5 安装

windows - 检查是否在不使用命令扩展且不使用批处理文件的情况下定义了环境变量?

javascript - 什么唯一标识向 Web API 发出请求的客户端?

c - 内存未分配(嵌入式 uC MSP430)

c++ - 一次从文件中读取字符 block ,并在 C 的下一个循环中读取下一个 block

windows - 如何在D应用程序中添加图标?

c# - 如何在不考虑缓存域凭据的情况下验证域凭据

android - 在 NFC 操作模式之间进行选择