0

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

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

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

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

4

2 回答 2

0

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

于 2013-07-20T21:33:20.683 回答
0

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

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

于 2014-05-15T15:07:38.653 回答