如何使用Win7修改程序文件中的文件(目录的安全权限?)

时间:2011-03-06 16:39:46

标签: .net windows-installer file-permissions

我之前听说过有关绕过Windows 7安全功能的问题,但我有 NO DESIRE 这样做。我的问题是关于配置程序,使其对特定目录中的文件具有“访问权限”。

C#Windows Forms,.NET 2010 Express

我有一个应该读取,编写和编辑各种文件的程序,包括用户配置文件数据文件。

现在,由于各种原因,并不是所有这些文件都会在安装程序时存在(我创建了一个MSI安装程序)。主要是为每个用户创建一个新文件,并且在安装时不知道用户。 我刚刚切换到Windows 7机器,并且在运行时尝试更新这些文件时遇到了真正的噩梦。

我一直相信(在各种其他Q / A搜索中)MSI安装的文件将“绑定”到该程序,Windows将让程序编辑这些文件而不会抱怨。 然而,自从我开始使用Windows XP以来,我从未打扰过将这些配置文件包含在MSI中。在重新设计所有内容之前,我想进一步研究。

问题1:这是准确的吗?我从来没有看到它明确陈述,或问过。 MSI安装的文件会在程序中获得读/写权限吗?

因此,考虑到这一背景,我想了解是否有办法允许任何文件进行CRUD,只要它保留在应用程序目录中,如MSI文件。 我愿意定义特殊的“权限”目录,或其他任何需要的目录。

另一个(愚蠢的)简单的解决方案是在Program Files目录之外安装程序,但这似乎是不明智的。

问题2:如何将程序的访问权限配置为允许文件CRUD,即使仅限于特定目录?

感谢分享任何见解! ^ _ ^

1 个答案:

答案 0 :(得分:1)

问题1 :不,这不正确。 MSI安装的文件没有什么特别之处。

问题2 :不要尝试在Program Files目录下编写应用程序设置文件。而是将它们放在CSIDL_COMMON_APPDATA中 - 请参阅SHGetFolderPath

你真的应该试着摆脱期望在安装时间以外的任何时间写入Program Files目录的习惯。这就是系统提供各种其他special folder locations

的原因