【问题标题】:Launch an app on Windows startup that requires administrator privileges在 Windows 启动时启动需要管理员权限的应用
【发布时间】:2017-07-18 13:49:12
【问题描述】:

假设app.exe 是用requireAdministrator 清单as detailed here 构建的(这确实是必要的,因为这里不属于主题)。启动应用时,在启用Windows UAC的情况下,有正常提示:

现在此应用程序需要在 Windows 启动 上运行:在选项对话框中,有一个“在 Windows 启动时启动”复选框可以选中或不选中。选中后,它会在

中的注册表中添加一个键
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

启用此“在 Windows 启动时启动功能”。

问题:在Windows启动时,当app.exe在后台(自动)启动时,会出现这个UAC对话框(见之前的截图),这对用户来说很烦人。

问题:如何使app.exe 可以启动 1. 与requireAdminstrator 2. 在Windows 启动时静默启动?

这样做的干净方法是什么?很多软件都这样做(索引软件自 Windows 启动后都在后台运行,并且不显示这样的对话框)。


注意:如果可能,我想避免使用 TaskScheduler 方法:https://www.sevenforums.com/tutorials/11949-elevated-program-shortcut-without-uac-prompt-create.html

【问题讨论】:

标签: windows winapi visual-c++ uac


【解决方案1】:
  1. 索引软件“Everything”确实显示了这样的 dlalog。
  2. 您考虑的其他服务仅运行具有管理员权限的服务,而不是 UI。
  3. 运行服务需要软件按照该意图进行架构,普通用户应用程序可以在“at”服务的帮助下使用服务规则启动,您已经知道如何执行此操作(任务计划程序)。李>
  4. 您可以用其他一些服务代替任务计划程序,但可能会因不必要的重复、资源浪费和可能的新安全漏洞而惹恼用户。

搁置您的偏好,并使用任务计划程序。 或者删除应用程序的背景部分并编写一个服务来代替。

在授予您的代码管理员权限时要非常小心。任何错误都可能导致颠覆整个安全基础设施。权力越大,责任越大。

【讨论】:

  • 感谢您的回答。我想让app.exe 的最终用户的生活更轻松。有没有办法通过在我的选项对话框中简单地使用“启动时启动”复选框来实现这一点?勾选后会自动创建这个Task Scheduler任务(或其他方法)?
  • @Basj:您需要提示管理员权限才能创建自动提升的任务(如果非提升的软件可以自动提升自身运行,UAC 就不会太好),但是是的,这是可能的。
  • 嗯,有一种方法可以避免“启动时启动”选项需要提升。让您的安装程序(已以管理员身份运行)创建任务,但已禁用。然后选项对话框可以在启用/禁用之间切换该任务。
  • 好的,所以提示只会出现一次(第一次启动),然后,一旦创建任务,它会在每次启动时以管理员身份静默运行?您是否知道如何从代码中创建这样的任务(任何演示示例)?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-01
  • 2012-08-03
  • 2013-12-13
相关资源
最近更新 更多