2010-07-30 4 views
4

je dois savoir qui a créé un fichier en utilisant .NETComment puis-je savoir qui a créé un fichier sous Windows en utilisant .NET?

je l'ai déjà essayé ce qui suit:

string FileLocation = @"C:\test.txt"; 
FileInfo droppedFile = new FileInfo(FileLocation); 
FileSecurity fileSecurity = droppedFile.GetAccessControl(); 
IdentityReference identityReference = fileSecurity.GetOwner(typeof(NTAccount)); 
string userName = identityReference.Value; 
Console.WriteLine(userName); 

Tout cela revient est « BUILTIN \ Administrateurs »

que je fais quelque chose de mal ici? Parce que quand je regarde le C: \ dans l'explorateur, le propriétaire montre le nom d'utilisateur correct, quand j'exécute le code ci-dessus il renvoie "BUILTIN \ Administrators"

Ce qui n'est même pas un domaine et un nom d'utilisateur, je pense que c'est un groupe de sécurité.

Toute aide appréciée.

+0

double possible de [Obtenir/réglage propriétaire du fichier en C#] (http://stackoverflow.com/questions/153087/getting-setting-file-owner-in-c) –

+0

Pas vraiment un double - même question re "BUILTIN \ Administrators" existe en tant que commentaire, et il n'y a pas de réponse –

Répondre

5

Si un utilisateur est un administrateur, les fichiers qu'il a créés sont considérés comme appartenant à l'ensemble du groupe d'administrateurs et non à l'utilisateur individuel.

Vous pouvez voir le même comportement dans la boîte de dialogue des propriétés de l'explorateur. Malheureusement, je ne pense pas qu'il existe une solution de contournement, autre que de ne pas créer d'administrateurs pour les utilisateurs.

Modifier:This Technet article explique ce comportement plus en détail. La logique est que Windows traite tous les administrateurs comme une entité unique; Tout administrateur du système peut faire tout ce que les autres administrateurs peuvent faire.

  • Si un administrateur est Permissioned sur un fichier, sont donc tous les autres administrateurs
  • Si un administrateur accès est refusé, puis aussi le reste des admins
  • Et si un administrateur est propriétaire d'un fichier - le Le propriétaire du fichier dispose d'un accès privilégié à ce fichier. Tous les autres administrateurs doivent également posséder ce fichier.
1

Mise à jour: Je me trompe, il y a un descripteur de propriétaire pour les objets de fichier! (où était ma tête). Jetez un oeil à this MSDN article.

Peut-être parce que l'objet fichier ne définit pas un créateur ou un propriétaire, mais qu'il appartient au système lui-même (builtin \ Administrators). La liste "noms de groupes ou d'utilisateurs" ne spécifie qu'une liste de groupes et d'utilisateurs ayant accès au fichier, mais pas un créateur spécifiquement.

Le mieux que vous puissiez faire est de parcourir la liste des "noms de groupes ou d'utilisateurs" et de deviner quel est le créateur.

+0

La chose étrange est que dans l'explorateur si je passe à l'affichage des détails et affiche la colonne "propriétaire" il montre mon nom d'utilisateur NT. Donc l'information est là, c'est juste que l'utilisation du code ci-dessus ne retourne pas la valeur affichée par l'explorateur –

+0

@Dan, c'est dommage, mais là encore pas étonnant;) Avez-vous déjà vu cet article, http: // www.emmet-gray.com/Articles/GetOwner.htm? – invert

+0

Les deux liens sont morts, Jim. – Manchuwook

Questions connexes