【问题标题】:How to install a program so it can be launched at startup with admin rights on Windows Vista/7如何安装程序,以便在 Windows Vista/7 上以管理员权限在启动时启动它
【发布时间】:2011-03-20 09:56:07
【问题描述】:

我阅读了如何使用服务来做到这一点,但我想知道它是否可以通过简单的应用程序来实现。 我正在使用 c#。

谢谢

【问题讨论】:

    标签: c# windows uac elevation


    【解决方案1】:

    你不能。在未经用户同意的情况下运行提升的唯一其他方式是作为计划任务。

    【讨论】:

    • errm,所以服务是唯一的方法?那么,服务可以启动我的应用程序吗?我的应用程序有一些图形组件,这就是为什么我不能让它成为服务。
    • 您不想让服务启动您的应用程序,因为您必须将其标记为与桌面交互,并且应用程序将运行提升。这开辟了巨大的可能性,即该程序可以被利用来运行其他提升的程序并基本上危及整个机器。
    【解决方案2】:

    Windows 不会在启动时运行提升的应用程序,因为它不想提示您输入一百万个启动应用程序。从技术上讲,您可以通过编写一个简单的启动器来解决这个问题,ShellExecute 是您的真实应用程序,但这会在启动时提示您并且非常烦人。正如其他人所说,最好的方法是将您需要管理权限的任务转移到服务中,并将用户界面的东西分开。

    【讨论】:

      【解决方案3】:

      我鼓励您阅读UAC team's blog regarding why startup applications are blocked from requiring elevation 上的帖子。需要考虑的一件事:要求提升完全会阻止标准用户使用您的应用。

      官方指南:您的启动程序不应该需要提升。老实说,我很难想象在一个启动应用程序中你可以合法地要求提升的场景。您能否提供更多关于为什么您需要提升的详细信息?

      【讨论】:

      • 我的猜测是他试图将特定的管理功能委派给标准用户,或者他正在解决上游应用程序设计问题。
      【解决方案4】:

      这是不可能的。您可能拥有的最接近的体验是创建一个运行提升的服务和一个无需提升运行且只是服务前端的 winforms 应用程序。但是你必须小心,如果你没有正确关闭墙壁,你可能会引起安全问题。

      【讨论】:

        猜你喜欢
        • 2012-01-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-07-22
        • 1970-01-01
        • 1970-01-01
        • 2016-09-29
        • 2011-06-06
        相关资源
        最近更新 更多