2008-11-26 9 views
1

J'ai écrit du code pour définir l'autorisation du dossier. La fonction que j'ai développée étaitRépertoire/Autorisation de fichier Problème

public void SetPermission(string user,FileSystemRights rights) 
{ 
    DirectoryInfo dInfo = new DirectoryInfo(folderPath); 
    DirectorySecurity oDirectorySecurity = new DirectorySecurity(); 

    oDirectorySecurity.AddAccessRule(new FileSystemAccessRule(user, rights, AccessControlType.Allow)); 
    dInfo.SetAccessControl(oDirectorySecurity); 
} 

Cette fonction fonctionne correctement pour définir l'autorisation pour l'utilisateur. Mais quand je vérifie le dossier Propriétés -> Sécurité, utilisateur ajouté. Mais aucune autorisation n'est cochée dans la case à cocher Ouvrir la boîte de dialogue Avancé. Dans cette boîte, je peux voir la permission, que je définis pour l'utilisateur. Donc, ma question est pourquoi il n'y a pas de case cochée sur l'onglet de sécurité, mais il est là dans l'onglet avancé?

S'il vous plaît aidez-moi !!!!!!

Répondre

1

Je suis tombé sur ça aussi. Cela semble être un problème de service.

Vous pouvez lire comment je l'ai fixé à http://jspot.jerryhanel.com/2009/01/08/c-filedirectory-permissions/

La version courte: Vous devez définir un indicateur pour tous les ACLs pour tous les utilisateurs. Oui ... c'est moche. Et lorsque vous ajoutez le Service Pack 3, les coches disparaissent à nouveau. Si quelqu'un a une solution plus propre que celle-ci, SVP faites le moi savoir.

J'ai le code pour cela sur mon site.

MISE À JOUR: L'URL pointe désormais vers le nouveau site.

+0

pouvez-vous me priver de la même chose? –

+0

Ce lien est en bas maintenant :-( – plc

+0

J'ai corrigé le lien Désolé à ce sujet. – Jerry

0

Il peut être utile d'utiliser dInfo.GetAccessControl pour initialiser oDirectorySecurity. Vous pouvez également essayer d'appeler oDirectorySecurity.SetOwner. Parfois, les autorisations n'apparaissent que si elles ne sont pas appliquées à la correction d'objets. Essayez de définir les indicateurs Inheritance/Propigation sur votre objet FileSystemAccessRule.