1

对于一个单独的项目,我的代码读入一个文件,销毁旧文件并构建新文件等。但是我需要从旧文件中获取 FileSecurity AccessControl 并将其应用于新文件。我对 C# 相当陌生,所以我以前没有使用过 FileSecurity,下面是我想出的,它没有错误,但它似乎也不起作用。

public static void Main()
{
    try
    {
        string fileName = "test.txt";
        FileInfo fi = new FileInfo(fileName);
        FileSecurity fs = fi.GetAccessControl();

        Console.WriteLine("Got perms");
        Console.Read();

        Console.WriteLine("Adding access control to " + fileName);

        fi.SetAccessControl(fs);

        Console.WriteLine("Done.");
    }
    catch (Exception e)
    {
        Console.WriteLine(e);
    }
    Console.Read();
}

我要做的测试是让用户完全控制文件。将程序运行到前半部分,删除文件并在没有完全控制的情况下再次创建它,然后让程序完成。但是,当我转到文件的安全选项卡时,它不会显示完全控制。我还尝试在删除旧文件后创建一个新的 FileInfo 对象,但这也不起作用。

任何建议都会很有帮助

4

1 回答 1

0

像这样的东西应该工作

        string dir = Path.GetDirectoryName(tbFileLocation.Text);

        DirectoryInfo di = new DirectoryInfo(dir);

        DirectorySecurity ds = di.GetAccessControl();

        FileSystemRights fsRights = FileSystemRights.FullControl;
        FileSystemAccessRule accessRule = new FileSystemAccessRule("Dummy", fsRights, AccessControlType.Allow);

        ds.AddAccessRule(accessRule);

        di.SetAccessControl(ds);
于 2011-12-02T08:47:43.730 回答