1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| // ********************************************************************************
static public bool HasRights(string path, WindowsIdentity account)
{
if (path.Length <= 0)
{
return false;
}
if (!Directory.Exists(path))
{
return false;
}
DirectorySecurity dirSecurity = null;
try
{
dirSecurity = Directory.GetAccessControl(path);
}
catch (UnauthorizedAccessException e)
{
return false;
}
var rules = dirSecurity.GetAccessRules(true, true, typeof(NTAccount));
WindowsPrincipal wp = new WindowsPrincipal(account);
int R=0;
foreach (FileSystemAccessRule rule in rules)
{
if (wp.IsInRole(rule.IdentityReference.Value))
{
if ((rule.FileSystemRights & FileSystemRights.CreateDirectories) == FileSystemRights.CreateDirectories)
{
R++;
}
if ((rule.FileSystemRights & FileSystemRights.Write) == FileSystemRights.Write)
{
R++;
}
}
}
if (R >= 2)
{
return true;
}
return false;
} |
Partager