我正在尝试使用基本的MSI安装程序在programdata文件夹中安装一组文件。由于文件的内容是动态的,并且是在安装过程中生成的,因此我将在安装过程中使用C#代码创建文件。
这些文件是在适当的文件夹中创建的,除了文件许可权之外,其他所有东西都很好。据我了解,文件应该从父文件夹继承其权限(如果启用),但是在这种情况下,不会发生这种情况。我创建的文件对于普通用户应该是可写的,并且我不想为每个创建的文件显式设置权限。问题可能是安装程序以不同的权限运行,因此文件没有从其父文件夹继承权限吗?
在此先感谢您的帮助。
最佳答案
安装程序将以管理员权限运行,这将使其可以更改程序文件中的任何内容。普通用户对程序文件文件夹和ProgramData/Common Application Data文件夹具有只读访问权限。
MSI的lock permission table允许安装程序在ProgramData/Common Application Data中创建后更改文件夹的权限。 Visual Studio的安装项目不支持MSI的锁定权限表,因此,如果您需要创建的文件夹对安装项目中的普通用户可写,则需要使用SetNamedSecurityInfo在自定义操作中授予权限,或者将MSI数据库作为帖子进行修改。建立步骤。您还可以找到可以处理MSI锁定权限表的MSI创作软件。