2010-04-07 11 views
4

Y at-il un moyen d'apprendre le nom d'utilisateur de l'utilisateur qui a un fichier ouvert?Obtenir le nom d'utilisateur du fichier ouvert

Je développe un programme qui sera un client de bureau pour beaucoup d'utilisateurs. L'application va ouvrir certains fichiers et je voudrais autoriser de nombreux utilisateurs à ouvrir les fichiers en même temps, mais seulement permettre au premier utilisateur d'avoir des privilèges d'écriture. Ce que je veux, c'est pouvoir dire aux autres utilisateurs qui ont un accès en écriture à un fichier.

Est-ce quelque chose qui peut être appris par une application? (Je développe en VS 2008).

+0

Est-ce une sorte d'application client-serveur? –

Répondre

2

Windows ne le prend pas en charge. Mais vous l'ajoutez facilement vous-même. Lorsque vous gagnez l'accès en écriture au fichier, écrivez un autre fichier caché avec le nom d'utilisateur (Environment.UserName) dans le même répertoire (comme ~ originalname.username).

Lorsque vous ne parvenez pas à obtenir un accès en écriture, essayez d'ouvrir ce fichier pour lire le nom d'utilisateur. Dors pendant une seconde si cela échoue.

+3

C'est une solution valide. Mais je pense que vous pouvez vraiment le faire avec l'API Windows. Vous pouvez apprendre quels processus ont un fichier ouvert, et vous pouvez apprendre quel utilisateur possède un processus. Je ne connais pas les bons appels API, mais cela semble possible. –

+0

NtQuerySystemInformation, les arguments réels sont non documentés et les structures sont différentes pour chaque système d'exploitation. Plus précisément: le processus qui possède le fichier peut très bien exister sur une machine à des milliers de kilomètres, connectée via un tunnel VPN. Bien hors de portée de votre machine. –

Questions connexes