.net 存储';每台机器';申请详情

.net 存储';每台机器';申请详情,.net,path,clickonce,application-data,.net,Path,Clickonce,Application Data,我的应用程序需要将一些信息写入一个文件,并使其对机器通用(对所有用户通用) 目前我将其存储在C:\Documents and Settings\All Users\Application Data 但问题是,每当管理员创建文件时,所有其他用户都没有写入权限 但我希望所有用户都能对该文件拥有写权限,以便所有用户都能修改其中的数据。有人能帮我吗 编辑:我想要一个所有用户都通用的xml文件存储区 谢谢注册中心对您来说是个好地方吗?(取决于您要存储的内容)。 您可以在HKLM配置单元上创建一个节点,供所

我的应用程序需要将一些信息写入一个文件,并使其对机器通用(对所有用户通用)

目前我将其存储在C:\Documents and Settings\All Users\Application Data

但问题是,每当管理员创建文件时,所有其他用户都没有写入权限

但我希望所有用户都能对该文件拥有写权限,以便所有用户都能修改其中的数据。有人能帮我吗

编辑:我想要一个所有用户都通用的xml文件存储区


谢谢

注册中心对您来说是个好地方吗?(取决于您要存储的内容)。
您可以在HKLM配置单元上创建一个节点,供所有用户访问

我建议您研究该方法和类。特别是,提供了修改给定文件的文件访问控制列表(权限集)的完整示例。下面是该示例的简化版本,它为每个人提供了
C:\TEMP\junk.txt
的读写权限:

using System;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;

class WorldWrite
{
    static void Main()
    {
        string filename = @"C:\TEMP\junk.txt";
        if (!File.Exists(filename)) {
            Console.WriteLine("No such file " + filename);
            return;
        }

        /* Get the previous ACL, add a rule to give everyone read
         * and write permission, and write back the resulting ACL. */
        FileSecurity fileACLs = File.GetAccessControl(filename);
        fileACLs.AddAccessRule(new FileSystemAccessRule(
            // For everyone 
            new SecurityIdentifier (
                WellKnownSidType.WorldSid, 
                null /* domain SID; ignored for Everyone */
            ),
            // Allow read and write (of data and metadata), 
            // but not delete or execute
            FileSystemRights.Read | FileSystemRights.Write,
            AccessControlType.Allow
        ));
        File.SetAccessControl(filename, fileACLs);
        Console.WriteLine("Success!");
    }
}

我还关心如何指定共享应用程序数据目录。如果您正在硬编码名称
C:\Documents and Settings\All Users\Application Data
,那么您的代码将无法在非英语版本的Windows、Vista或Windows 7上运行。使用查找要使用的正确目录可能更好。

如果您使用ClickOnce部署,这将很难做到,因为您必须提升权限才能读取/写入公用文件夹,而ClickOnce应用无法做到这一点


您可以创建一个小的exe文件来执行您想要的操作,并让clickonce应用程序调用该文件并让它提升权限。这是您唯一的选择。

不,不会的,我想存储一个xml文件。我已经尝试过了,但问题是只有文件所有者才能更改对该文件的访问权限。因此,我计划在用户组“Everyone”第一次创建后立即将其写入权限更改为“Everyone”。无论如何,谢谢你的回答!等等,所以你需要文件所有者以外的人来更改其权限?!我希望您理解为什么通常只有受信任的用户(如管理员!)才有此权限…我已通过在第一次创建文件时向所有人授予写入权限来解决此问题。。现在其他用户可以修改文件:)那么您是否手动创建该文件?或者你是通过ClickOnce应用程序进行的,如果是,如何进行?但是你是如何授予每个人写权限的?您是以编程方式还是手动方式完成的?在ClickOnce应用程序中?它允许您创建文件夹,并在创建文件夹时向所有人授予写入权限?我经常遇到这个问题,所以如果这就是你的工作原理,那就太好了,我可以向其他人推荐同样的解决方案。我想这会对你有所帮助