Oui j'avais déja repéré cette methode
Mais ce n'est helas ce n'est pas aussi trivial 
Premiererement ce sont les droits d'un repertoire que je cherche
Il faut donc plutot utiliser
Directory.GetAccessControl(path);
Et a partir de la il y a encore du chemin a faire pour determiner les droits de l'utilisateur
Pour le moment j'essaye de "bricoler" une methode qui devrait me donner un booleen selon un masque qui contiendrait les droits minimum attendus
Je chipotte encore sur la definition de ce masque et j'analyse ce que peut contenir FileSystemRights
Car je me dis que si FileSystemRights vaut FullControl, un test sur Read va peut etre me rendre false alors que "FullControl" est supérieur
Donc je bricole en essai erreur car le sujet semble asser vaste
Voici ou j'en suis
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
| // ********************************************************************************
static public bool HasRights(string path, WindowsIdentity account,FileSystemRights NeededRights)
{
if (path.Length <= 0)
{
return false;
}
if (!Directory.Exists(path))
{
return false;
}
DirectorySecurity dirSec = null;
try
{
dirSec = Directory.GetAccessControl(path);
}
catch (UnauthorizedAccessException)
{
return false;
}
var rules = dirSec.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.FullControl) == FileSystemRights.FullControl)
{
R++;
}
if ((rule.FileSystemRights & FileSystemRights.Read) == FileSystemRights.Read)
{
R++;
}
}
}
return false;
} |
Partager