处理混合用户/管理窗口应用中的管理员权限

时间:2013-07-04 12:38:26

标签: windows security mfc uac

我的MFC应用程序通常以管理员权限运行,但是,有一项操作需要管理员权限(激活必须将状态保存到HKLM的软件)。

现在,我创建了两个.exe文件:普通的应用程序和“Activation.exe”,它必须以管理员身份运行,并且在Manifest中有requestedExecutionLevel = requireAdministrator。使用ShellExecute(Activation.exe)按钮启动激活。

但是,两个应用程序共享大量代码,所以我想将两个exe合并到一个exe中。但是,我如何确保代码的特定部分是使用管理员权限执行的?这个方法应该/必须兼容到NT4。

一个想法是使用开关(例如“myapp.exe -activate”)在主exe中集成Activation.exe的功能。一个小的引导程序确保它只能以管理员身份运行(在Manifest中为requireAdministrator)并且只执行ShellExec(myapp.exe -activate)。但这真的是最好的方式吗?

2 个答案:

答案 0 :(得分:0)

我不知道这是不是最好的方法(没有人回答)但我现在就这样做了:)引导程序只需要Manifest中的requireAdministrator,并使用开关“/ Activate”执行一个ShellExecute到主执行程序。

答案 1 :(得分:0)

我通常会使用动词ShellExecuteEx来调用runas,以管理员身份启动任何可执行文件,即使它显示为asInvoker

请注意,在已禁用UAC的系统上,生成的启动可能无法获得管理员权限;我相信这个警告也适用于启动exe表现requireAdministrator的方法。