2010-01-02 5 views

Répondre

11

Sous Windows 2000 et versions ultérieures, vous ne pouvez pas faire cela sans utiliser un pilote en mode noyau. Process Explorer et d'autres outils similaires charger un pilote automatiquement pour accomplir cela. En effet, les handles de fichiers sont dans l'espace noyau et ne sont pas accessibles par les applications en mode utilisateur (fichiers EXE). Si cela vous intéresse vraiment, regardez this project.

+0

Vous pouvez voir que Process Explorer est en train de charger un pilote en regardant les DLL du processus 'System'; vous verrez un pilote similaire à 'PROCEXP113.SYS' chargé –

3

La méthode approuvée par MSDN est IFileIsInUse::GetAppName(). Nécessite Vista, cependant.

+0

Cela semble nécessiter une coopération du programme qui a ouvert un fichier, ce qui n'est pas la même chose que ce qui est demandé. – Mehrdad

+0

C'est le moyen le plus riche en informations, c'est pourquoi vous devriez l'essayer en premier. – MSalters

+1

Bien sûr, il n'y a pas de mal à l'essayer, mais les chances que cela fonctionne sont très faibles, donc le PO aura probablement besoin d'une alternative indépendamment. – Mehrdad

Questions connexes