读书人

如何判断一个目录是否有写入权限

发布时间: 2012-12-14 10:33:08 作者: rapoo

怎么判断一个目录是否有写入权限?
本帖最后由 vip123 于 2012-09-27 18:28:22 编辑 要在一个目录里(本机,或者其它机器的共享目录)创建一个新的子目录,不知道是否能在这个目录里创建新的子目录,所以要在创建之前做一下判断。请问有什么直接的判断方法没有?

(不要通过 try 方法尝试先去创建,报错表明是只读的)
[最优解释]
using System;
using System.IO;
using System.Security.AccessControl;
using System.Security.Principal;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string directory = @"C:\downloads";

DirectoryInfo di = new DirectoryInfo(directory);

DirectorySecurity ds = di.GetAccessControl();

foreach (AccessRule rule in ds.GetAccessRules(true, true, typeof(NTAccount)))
{
Console.WriteLine("Identity = {0}; Access = {1}", rule.IdentityReference.Value, rule.AccessControlType);
}
}
}
}
[其他解释]
貌似有个


File.GetAccessControl(filePath)=>FileSecurity
FileSecurity.GetAccessRules(
bool includeExplicit,//true
bool includeInherited,//true
Type targetType//typeof(SecurityIdentifier)
)=>System.Security.AccessControl.AuthorizationRuleCollection
//遍历System.Security.AccessControl.AuthorizationRuleCollection
//检查每个子元素,如果是Full...表示具有所有权限。
File.GetAttributes=>FileAttributes

//此方法无法判断文件是否死锁了



[其他解释]

DirectoryInfo dirinfo = new DirectoryInfo(@"c:\test");

System.Security.AccessControl.DirectorySecurity sec = dirinfo.GetAccessControl();

foreach (FileSystemAccessRule rule in sec.GetAccessRules(true, true, typeof(System.Security.Principal.NTAccount)))
{
Console.WriteLine("----------------------------------");
Console.WriteLine(rule.IdentityReference.Value);
if ((rule.FileSystemRights & FileSystemRights.Read) != 0)
Console.WriteLine(rule.FileSystemRights.ToString());
}

Console.Read();

每个用户对应的权限


[其他解释]
我想判断的目录
[其他解释]
顶起来,有人知道吗
[其他解释]
还是没有弄明白。我只想知道当前已经打开的共享文件夹有没有写入权限。
[其他解释]
能不能写个函数,能读写就返回True,不能就返回false?

读书人网 >.NET Framework

热点推荐