我正在尝试找到正确的文件夹。目的是在这个文件夹中创建一个文件,当我要求我的程序创建这个文件。我几乎什么都试过了,可还是不行。
try
{
DirectorySecurity ds = Directory.GetAccessControl(path);
foreach (FileSystemAccessRule rule in ds.GetAccessRules(true, true, typeof(System.Security.Principal.SecurityIdentifier)))
{
if ((rule.FileSystemRights & FileSystemRights.CreateFiles) > 0 /*== FileSystemRights.CreateFiles)*/)
return true;
}
}
catch (UnauthorizedAccessException e)
{
return false;
}
return false;
我的问题是:FileSystemAccessRule说我有权限,但是当我想创建我的文件时,出现"unauthorizeexception"异常。
我尝试使用DirectoryInfo,像这样:
DirectoryInfo di = new DirectoryInfo(path);
DirectorySecurity ds = di.GetAccessControl();
而不是直接使用"Directory"对象。另外,我认为我的问题是关于GetAccessRules,所以我试图使用安全标识符和NTAccount,两者都说我拥有这个文件夹(FullControl)的所有权利,而最后,我没有任何权利。当然我的路径是好的,我检查过了。
有人知道另一种方法来获得正确的文件夹,或者如果我做错了什么,一点帮助将是一种乐趣。
我认为你的代码的问题是,它没有检查有访问权限的特定用户。GetAccessControl
获取所有用户的列表,这些用户有任何访问规则应用于文件夹,而不仅仅是您。
有一个很好的答案已经在这里做适当的检查:检查目录和文件写权限在。net