我正试图找到一个文件夹。当我要求我的程序创建此文件时,目的是在此文件夹中创建一个文件。我几乎尝试了一切,但它仍然没有工作。
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说我有权限,但是当我想创建我的文件时," unauthorizedexception"异常出现。
我尝试使用DirectoryInfo,就像那样:
DirectoryInfo di = new DirectoryInfo(path);
DirectorySecurity ds = di.GetAccessControl();
而不是使用"目录"对象直接。另外,我认为我的问题与GetAccessRules有关,所以我试图使用SecurityIdentifier和NTAccount,两者都说我在这个文件夹上有所有权利(FullControl),而最后,我没有任何权利。当然,我的道路很好,我查了一下。
有人知道在文件夹上获得权利的另一种方法,或者如果我做错了什么,一点帮助将是一种乐趣。
答案 0 :(得分:0)
我认为您的代码存在的问题是不检查具有访问权限的特定用户。 GetAccessControl
获取所有具有应用于该文件夹的访问规则的用户的列表,而不仅仅是您。
这里有一个很好的答案,如何正确检查:Checking for directory and file write permissions in .NET