我有一个命令行实用程序用于某种目的。我使用ShellExecuteEx函数从COM DLL启动此实用程序。在调用ShellExecuteEx时,我将lpVerb参数指定为“runas”,以便启动实用程序。我在启动时从exe客户端调用COM接口函数。因此,当我启动客户端exe时,该实用程序也会启动。我的问题是,由于实用程序已启动提升,它始终要求UAC确认提示。我无法忍受这一点,因为在此过程中不会进行人工干预。所以我需要在不显示UAC提示的情况下启动该实用程序,但在启动客户端exe时仍然会提升。有没有办法实现这个目标?我希望在实用程序本身内进行一些更改,例如更改清单文件而不是某些系统设置更改。任何帮助将不胜感激..
答案 0 :(得分:0)
这不可能以你描述的方式(显示更改)来实现,因为这会破坏UAC的目的。
但是,您可以使用计划任务。这样,用户交互的提升只需要一次(创建任务时)。
看看我在这里给出的答案:https://stackoverflow.com/a/36838171/1871033
您也可以这样做,但没有登录触发器。因此,您将拥有一个不会自行运行的计划任务,但它存在。然后,您可以在没有提升的情况下使用schtasks.exe /run /tn YourTaskName
来使用提升的权限运行任务。