【问题标题】:Users/Public not writeable in windows 7: where do I put user data?用户/公共在 Windows 7 中不可写:我将用户数据放在哪里?
【发布时间】:2009-07-06 23:18:26
【问题描述】:

我已经开始成为一个好公民,根据这里的这个问题:

Domain compatibility: where should shared data be written?

我的用户信息现在写入环境变量:

Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData)

然后在那里附加一个目录。如果该目录不存在,则程序会自动创建它,然后所有跨用户信息(日志文件、捕获的数据、设置选项等)都存储在该文件中。我对该文件的理解是,无论机器的设置如何,它都应该完全是用户可写的。

在 Windows XP 上,当附加到域时,没有问题;该文件被检测到并正确写入。在 Windows 7 上,该程序无法运行。用户的目录现在是 C:\ProgramData\MyFolder,并且该文件夹被创建为只读(天才!为什么不让它只读,毕竟没有人想写入 CommonApplicationData 位置!)。

我应该使用什么目录?该“特殊文件夹”是专门用于我需要的任务的文件夹,但该文件夹似乎不是用户可写的。

编辑以响应第一个响应: 我正在使用 WiX 安装程序,并且可以将任何文件添加到那里的安装程序中。我不知道该怎么做,所以请用 WiX 安装程序魔术词回答。

【问题讨论】:

    标签: windows-7 user-data


    【解决方案1】:

    根据Vista compatibility guidelines,您的应用程序应在安装程序的 CommonApplicationsData 下为其内容创建一个文件夹(我是否提到它还必须有一个安装程序?),并在那里为该文件夹分配适当的权限。

    【讨论】:

    • 好的,那么如何为所有用户使用 FileSystemAccessRule?该函数调用似乎只采用特定的用户 ID。
    • 该用户 ID 可以是“Everyone”,即任何 Windows 用户所属的组。但是,您不应该对名称进行硬编码,因为它在本地化的 Windows 版本上有所不同。相反,使用这样的东西: SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null); FileSystemAccessRule 规则 = new FileSystemAccessRule(everyone, ...);
    猜你喜欢
    • 1970-01-01
    • 2017-11-06
    • 2013-06-26
    • 2018-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多