【问题标题】:How to modify a file in Program Files with Win7 (Security Rights to a directory?)如何使用 Win7 修改 Program Files 中的文件(目录的安全权限?)
【发布时间】:2011-07-09 20:51:15
【问题描述】:

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

C# Windows 窗体,.NET 2010 Express

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

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

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

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

.

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

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

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

.

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

【问题讨论】:

    标签: .net windows-installer file-permissions


    【解决方案1】:

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

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

    您确实应该尝试改掉期望在安装时间以外的任何时间写入 Program Files 目录的习惯。这就是系统提供各种其他special folder locations的原因。

    【讨论】:

    • 好的,我明白你在说什么,但我已经阅读了 2 个小时,但仍然没有找到实施你的建议的方法...什么层/language 这一切发生在什么地方?我感觉它发生在 SHELL 级别...我正在尝试访问 .NET、System.IO 级别的内容...我们是否沟通不畅,或者我在文件方面的教育不足I/O 程序???
    • @Tinkerer 致电Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) 以获取通用应用数据文件夹的位置。
    猜你喜欢
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 2015-04-28
    • 1970-01-01
    • 2010-11-14
    • 2016-02-25
    • 2016-04-30
    相关资源
    最近更新 更多