可以在创建Windows安装程序时为Application文件夹授予管理权限

时间:2018-05-25 09:27:14

标签: c# wpf windows-installer

我正在使用WPF项目。我想知道在创建Windows安装程序时是否可以为应用程序文件夹授予管理员权限

2 个答案:

答案 0 :(得分:0)

更长的撰写 System.UnauthorizedAccessException while running .exe under program files(除了下面列出的选项之外还有其他一些选项)。

您可以更改安装文件夹的 ACL ,使其可供常规用户使用,或者您可以使用清单来要求管理员权限运行(常规)用户通常无法提升任何类似的应用程序 - 除非他们输入管理员密码)。但是,这样做是非常糟糕的设计 - 可以拒绝您的应用程序在某些环境中使用。

首选方法可以是确保将应用程序文件(数据和设置)存储在可供常规用户使用的位置 - 而无需在设置中进行任何修改或自定义。您可以写信至My Documents%UserProfile%中的某个地方 - 例如。

请参阅此现有答案,了解更为明确的解释: C++ MSI Package Administative Privileges

答案 1 :(得分:0)

您可能需要澄清您的问题。这里与斯坦的答案有一些重叠,但要扩大......

文件夹无法获得管理权限。程序可以获得提升的权限。文件夹可以具有访问权限,使具有各种权限的程序可以访问它们(或更少)。因此:

  1. 如果您希望安装程序以某种方式使您的程序以管理员身份运行(提升),则安装程序无法执行此操作。程序本身需要一个提升清单,要求提升管理员权限,这意味着普通的有限用户无法运行它。

  2. 如果问题是您在Program Files文件夹中有(或想要创建)数据文件,并且当受限用户运行它时您的应用程序无法写入,那么程序会将这些文件存储在错误的位置。文件夹具有诸如用户的应用程序数据之类的名称,因为它们应该用于它们。更改包含程序代码的Program Files文件夹的安全性通常被认为是不安全的,因为有限的用户可以更改您的代码文件。认证规则是一个有用的指导原则:

  3. " 10.3您的应用数据必须在计算机上的用户之间共享,应该存储在ProgramData中

    10.4您的应用程序的数据是特定用户专用的,不能与计算机的其他用户共享,必须存储在Users \\ AppData"

    您还没有说过使用什么工具来创建MSI文件,如果您有其他问题可能会有用。