Around and About .NET World

Il blog di Marco Minerva
posts - 1671, comments - 2232, trackbacks - 2135

My Links

News

Contattami su Live Messenger:


MCTS: Windows, Web, Distributed Applications & SQL Server

MCPD: Enterprise Applications

Tag Cloud

Archives

Post Categories

Links

Determinare i diritti sui file

L'introduzione della UAC di Windows Vista ha reso necessaria, tra le altre cose, una maggiore attenzione alla posizione in cui i programmi salvano le proprie impostazioni: questo perché, ad esempio, lo standard user non ha i diritti di scrittura nella cartella C:\Program Files. La seguente routine permette di sapere se l'utente dispone di determinati diritti sul file specificato:

public bool HasPermission(string fileName, FileSystemRights rights) { bool deny = false, allow = false; WindowsIdentity identity = WindowsIdentity.GetCurrent(); FileInfo fi = new FileInfo(fileName); AuthorizationRuleCollection acl = fi.GetAccessControl().GetAccessRules(true, true, typeof(SecurityIdentifier)); for (int i = 0; i < acl.Count; i++) { FileSystemAccessRule rule = (FileSystemAccessRule)acl[i]; if (identity.User.Equals(rule.IdentityReference)) { if (AccessControlType.Deny.Equals(rule.AccessControlType)) { if ((rule.FileSystemRights & rights) == rights) deny = true; } else if (AccessControlType.Allow.Equals(rule.AccessControlType)) { if ((rule.FileSystemRights & rights) == rights) allow = true; } } } IdentityReferenceCollection groups = identity.Groups; for (int j = 0; j < groups.Count; j++) { for (int i = 0; i < acl.Count; i++) { FileSystemAccessRule rule = (FileSystemAccessRule)acl[i]; if (groups[j].Equals(rule.IdentityReference)) { if (AccessControlType.Deny.Equals(rule.AccessControlType)) { if ((rule.FileSystemRights & rights) == rights) deny = true; } else if (AccessControlType.Allow.Equals(rule.AccessControlType)) { if ((rule.FileSystemRights & rights) == rights) allow = true; } } } } return !deny && allow; }
Utilizzando questo codice, per sapere se l'utente ha il diritto di scrittura su un file basta scrivere qualcosa del tipo:

bool permesso = HasPermission(fileName, FileSystemRights.Write); if (permesso) MessageBox.Show("Hai i diritti di scrittura sul file."); else MessageBox.Show("Non hai i diritti di scrittura sul file.");

Print | posted on lunedì 2 aprile 2007 02:47 | Filed Under [ C# ]

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET