C# 可以在创建windows installer时授予应用程序文件夹的管理权限

C# 可以在创建windows installer时授予应用程序文件夹的管理权限,c#,wpf,windows-installer,C#,Wpf,Windows Installer,我正在使用WPF项目。我想知道,在创建windows installer时,我是否可以为应用程序文件夹授予管理员权限 您可以更改安装文件夹的ACL,使其可供普通用户写入,或者您可以使用清单要求您的应用程序具有管理员权限才能运行(普通用户通常无法提升任何类似的应用程序,除非他们输入管理员密码)。然而,这样做是非常糟糕的设计——达到应用程序可能被拒绝在某些环境中使用的程度 首选方法是确保将应用程序文件(数据和设置)存储在可供普通用户直接写入的位置,而无需在设置中进行任何修改或自定义。例如,您可以向

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


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

首选方法是确保将应用程序文件(数据和设置)存储在可供普通用户直接写入的位置,而无需在设置中进行任何修改或自定义。例如,您可以向
我的文档
%UserProfile%
中的某个地方写入


请参阅此现有答案,以获得更详细的解释:

您可能需要澄清您的问题。这里与Stein的答案有些重叠,但要扩展

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

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

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

  • “10.3必须在计算机上的用户之间共享的应用程序数据应存储在ProgramData中

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

    你还没有说你正在使用什么工具来创建你的MSI文件,如果你有进一步的问题,这可能是有用的