【问题标题】:Install application in window 7 without UAC using C#使用 C# 在没有 UAC 的窗口 7 中安装应用程序
【发布时间】:2010-08-20 03:13:18
【问题描述】:

当我在 Windows 7 中安装我的 C# 应用程序时,UAC 总是显示。我没有以管理员身份登录,但我希望在没有 UAC 的情况下安装我的应用程序。 你能告诉我怎么做吗?

【问题讨论】:

  • 我相当肯定对 Program Files 文件夹的任何操作都会触发 UAC 提示。
  • 不,不会的。但是,如果您没有收到 UAC 提示,您写入 Program Files 的尝试将失败并拒绝访问。

标签: c# uac


【解决方案1】:

UAC 提示显示有多种原因,其中没有一个是“exe 中的代码调用函数 X 或尝试写入位置 Y”。其中包括:

  • 名称包含设置、补丁、更新等(例如 setup21.exe)并且没有清单
  • 您嵌入了一个要求 requireAdministrator 的清单。你会故意在 Visual Studio 中这样做。
  • 在请求 requireAdministrator 的同一文件夹中有一个外部清单(对于 NewApp.exe,它将是 NewApp.exe.manifest)。你也会故意这样做的。
  • 您已右键单击该 exe,并在“属性兼容性”中选择提升它,或者以 XPSP2 运行,对于 7 也提升它
  • 贵公司中的某个人应用了组策略,要求此安装应用程序应以提升的权限运行(不太可能)
  • 您曾经运行过它,从 Windows 得到一个对话框,提示“可能无法正常工作”并同意使用“推荐设置”重试

这些看起来有可能吗?如果是,请更正它们并查看 UAC 提示是否消失。

【讨论】:

    【解决方案2】:

    单包创作 link text

    您需要使用 Windows Installer / Windows Installer XML 使此安装按照您的要求进行。

    【讨论】:

    • 您可以在 XP 上创建一个 Windows 安装程序包,在 2008 年 7 月运行时满足规范。
    【解决方案3】:

    如果您想安装没有 UAC 的应用程序,那么您只能触摸当前登录用户可以写入的文件夹。 Google Chrome 就是这样做的——它将整个应用程序安装到用户的本地应用程序数据文件夹中。

    这是非常不标准的,我认为 MS 应该禁止从该位置运行代码,但它是要求管理员/UAC 访问权限来安装应用程序的有效解决方案。

    顺便说一句,谷歌浏览器最近提供了一个传统的安装程序,因此一个用户可以安装它,供计算机上的所有用户使用。

    【讨论】:

      【解决方案4】:

      如果您希望在不触发 UAC 的情况下安装您的应用程序,请安装到 %APPDATA%(而不是安装到 %ProgramFiles%)并写入注册表中的 HKCU hiveonly(即不要'不要尝试写信给 HKLM、HKCR 等)

      【讨论】:

      • 这些选择将确保它在不提升的情况下成功。他们没有说明为什么它会上升。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 2011-07-15
      • 1970-01-01
      • 1970-01-01
      • 2014-01-09
      相关资源
      最近更新 更多