怎么判断一个目录是否有写入权限?
本帖最后由 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?