2010-01-02 3 views

Antwort

11

In Windows 2000 und höher, können Sie dies ohne Verwendung eines Kernel-Modus-Treibers nicht tun. Process Explorer und andere ähnliche Tools laden automatisch einen Treiber, um dies zu erreichen. Dies liegt daran, dass sich die Datei-Handles im Kernel-Bereich befinden und von Anwendungen im Benutzermodus (EXE-Dateien) nicht zugegriffen werden kann. Wenn Sie wirklich daran interessiert sind, werfen Sie einen Blick auf this project.

+0

Sie können sehen, dass Process Explorer einen Treiber lädt, indem Sie auf die DLLs des 'System'-Prozesses schauen; Sie werden sehen, dass ein Treiber wie 'PROCEXP113.SYS' geladen ist. –

3

Der MSDN-zugelassene Weg ist IFileIsInUse::GetAppName(). Benötigt Vista, obwohl.

+0

Dies scheint die Zusammenarbeit mit dem Programm zu erfordern, das eine Datei geöffnet hat, die nicht mit dem übereinstimmt, was gefragt wird. – Mehrdad

+0

Es ist der informationsreichste Weg, weshalb Sie es zuerst versuchen sollten. – MSalters

+1

Sicher, es ist nicht schaden, es zu versuchen, aber die Chancen, dass es funktioniert, sind sehr gering, so dass das OP wahrscheinlich eine Alternative unabhängig davon benötigen wird. – Mehrdad

Verwandte Themen