Windows7: 一次调用提升权限

Windows7: Elevating permissions for one call

我正在为任务栏通知区域开发一个应用程序(Windows XP 和 7 - 不要问!;))。它是从用户和管理员帐户启动的,通常不需要提升的权限,我也不想在应用程序启动时用 UAC 对话框打扰每个用户。

现在我想集成一个需要提升权限的调用(写入注册表,HKLM),我想知道为 [=18 实施此操作(在本例中为 Delphi)的最佳策略=] 7+?

我见过程序使用提升的权限和参数调用自身 (Delphi: Prompt for UAC elevation when needed) - 但有没有更好的方法来做到这一点?

您只能在创建进程时提升进程。所以这意味着您需要为此任务创建一个新流程。

当您需要执行提升的任务时,通过使用 runas 动词调用 ShellExecuteEx 来启动一个新进程。在进程命令行中指定要执行的任务。

如果您可以在安装时执行此任务,那可能更可取。