对于一个单独的项目,我的代码读入一个文件,销毁旧文件并构建新文件等。但是我需要从旧文件中获取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对象,但这也不起作用。
任何建议都会非常有用
答案 0 :(得分: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);