c# - premiere - Comment accorder l'autorisation complète à un fichier créé par mon application pour TOUS les utilisateurs?




wpf openclassroom (2)

Note aux personnes utilisant ceci.

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

La raison en est qu'il y a plusieurs langages Window et que tout le monde ne s'applique qu'aux EN, alors pour l'espagnol, il peut s'agir de "Todos" (ou d'autre chose).

using System.Security.AccessControl;
using System.Security.Principal;
using System.IO;

private void GrantAccess(string 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);
}

https://code.i-harness.com

L'outil que je développe doit accorder des droits d'accès "Full Control" à un fichier créé par lui. Il doit être lu, modifié et supprimé de tous les comptes Windows et même des futurs comptes 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 les futurs comptes possibles? Si la dernière partie n'est pas possible, comment procéder à la première exigence?

Merci.

MODIFIER:

C'est le code qui a fonctionné pour moi. Pris du lien du répondeur.

private bool GrantAccess(string 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 requis (mentionné vers le dernier dans le lien). Il accorde des privilèges même aux futurs comptes.


Vous devrez donner le contrôle total au groupe "Tout le monde" sur la machine. Trouvé this post sur MSDN qui en parle.

J'espère que cela fonctionne pour toi.





user-accounts