【问题标题】:Visual Studio produced MSI Installers, Program Files, and Administrator AccessVisual Studio 生成 MSI 安装程序、程序文件和管理员访问权限
【发布时间】:2011-03-10 15:17:13
【问题描述】:

我有一个工作程序,准备从中生成 MSI 以进行分发。默认安装位置是 C / Program Files / Foo / Bar ,这就是我希望它安装的位置。 然而,在该位置安装后,程序拒绝运行,除非右键单击并“以管理员身份运行”。

我了解该程序需要管理员访问权限,因为它安装在C / Program Files 中(我有一个备用安装路径将其安装到没有此问题的桌面),所以我正在寻找一种不必运行的方法每次我想以管理员身份使用该程序。

我原以为“以管理员身份”安装 .msi 可以解决问题,但右键单击 .msi 并没有像我预期的那样提供“以管理员身份运行”。

有什么办法可以让我不需要每次都以管理员身份运行程序,同时维护c / program files安装目录?

【问题讨论】:

  • 您能提供更多信息吗?您的应用程序是否引发异常?它是否将任何调试信息写入日志记录源?它的依赖关系是什么?您是否使用 SysInternals ProcMon 对其进行了分析以查找任何资源位置错误?

标签: c# windows admin-rights


【解决方案1】:

使用 setup.exe 构建 MSI。然后,您可以右键单击 EXE 并以管理员身份运行。您不能对 MSI 执行此操作,因为它不是程序,而是由不同程序 (msiexec.exe) 执行的文档 (数据库)。

【讨论】:

  • 以管理员身份运行安装程序 .exe 并不能解决此问题。
  • 您必须是管理员才能安装到 ProgramFilesFolder。
  • 程序安装得很好,但如果我运行“作为管理员”,它只会运行(从那个位置)。我正在寻找一些解决方案,我不必“以管理员身份”运行 every single time 我想运行程序,但仍然保持它安装在程序文件目录中。
  • 对不起,我以为你说 MSI 是问题所在。如果程序安装正确并且您的应用程序无法作为普通用户运行,那么这是应用程序问题而不是安装程序问题。你的依赖是什么?你是想写一个日志文件还是什么?如果是这样,您必须将其写入 ProgramFiles 之外的某个位置。你的程序是用什么写的?我会添加该标签并删除 MSI 标签。
【解决方案2】:

这通常发生在应用程序尝试将数据写入每台机器的位置(如 Program Files 或 HKEY_LOCAL_MACHINE)时。在这种情况下,应用程序只有在以管理员身份启动时才能工作。

一种解决方案是使用每个用户的位置来存储应用程序数据。例如用户配置文件文件夹和 HKEY_CURRENT_USER 下的应用程序数据 (AppData) 文件夹。

但是,如果您的应用程序确实需要管理员权限,您可以使用UAC application manifest

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    相关资源
    最近更新 更多