Comment accorder une autorisation complète à un fichier créé par mon application pour TOUS les utilisateurs?

L’outil que je développe doit accorder des droits d’access “Contrôle total” à un fichier créé par celui-ci. Il doit être lu, modifié et supprimé de tous les comptes Windows et même des comptes futurs possibles. Cela pourrait-il être réalisé?

Je sais que je peux essayer ceci pour un SPECIFIC_USER:

FileSystemAccessRule rule = new FileSystemAccessRule(SPECIFIC_USER, FileSystemRights.FullControl, AccessControlType.Allow); FileSecurity fSecurity = File.GetAccessControl(filePath); fSecurity.SetAccessRule(rule); File.SetAccessControl(filePath, fSecurity); 

Mais comment puis-je l’accorder à tous les utilisateurs? Et même des comptes futurs possibles? Si la dernière partie n’est pas possible, comment s’y prendre avec la première exigence?

Merci.

MODIFIER:

C’est le code qui a fonctionné pour moi. Tiré du lien du répondeur.

 private bool GrantAccess(ssortingng fullPath) { DirectoryInfo dInfo = new DirectoryInfo(fullPath); DirectorySecurity dSecurity = dInfo.GetAccessControl(); dSecurity.AddAccessRule(new FileSystemAccessRule("everyone", FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow)); dInfo.SetAccessControl(dSecurity); return true; } 

Notez le PropagationFlags.NoPropagateInherit qui est requirejs (mentionné vers le dernier dans le lien). Il accorde même des privilèges à des comptes futurs.

Note aux personnes utilisant ceci.

Lorsque vous utilisez des chaînes littérales pour FileSystemAccessRule , cela devrait être WellKnownSidType.WorldSid au lieu de "everyone" WellKnownSidType.WorldSid "everyone" .

La raison en est qu’il y a plusieurs langages Windows et que tout le monde ne s’applique qu’à ceux EN, donc pour l’espagnol, cela pourrait être “Todos” (ou autre chose).

 using System.Security.AccessControl; using System.Security.Principal; using System.IO; private void GrantAccess(ssortingng fullPath) { DirectoryInfo dInfo = new DirectoryInfo(fullPath); DirectorySecurity dSecurity = dInfo.GetAccessControl(); dSecurity.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null), FileSystemRights.FullControl, InheritanceFlags.ObjectInherit | InheritanceFlags.ContainerInherit, PropagationFlags.NoPropagateInherit, AccessControlType.Allow)); dInfo.SetAccessControl(dSecurity); } 

Vous devrez donner le contrôle total au groupe “Tout le monde” sur la machine. J’ai trouvé cet article sur MSDN qui en parle.

J’espère que cela fonctionne pour toi.