Prozess einer geöffneten Datei ermitteln?
-
Ich weiss nicht wie es geht, ich weiss nur es geht ganz sicher ohne FS Filtertreiber. Das Programm WhoLockMe kann das z.B. sehr schön, leider ist es nicht Open Source. Und es verwendet keinen FS Filtertreiber.
-
Ja... Es können eine Menge Programme. UnlockIT, Unlocker, Process Explorer, Handle, ... Es scheint also wirklich keine große Sache zu sein.
Ich habe sogar die meisten Programme disassembliert, und nach den API-Aufrufen geforscht... handle.exe bietet sich dafür perfekt an, da keine zusätzliche GUI vorhanden ist. Besonders häufig sind die üblichen Funktionsnamen wie z.B. OpenProcess, GetProcessHandle, GetProcAdress vorgekommen.
Aber ich kann mir daraus nichts sinnvolles basteln. Hoffentlich hat noch jemand 'ne Idee.
-
mikey schrieb:
Ich habe sogar die meisten Programme disassembliert, und nach den API-Aufrufen geforscht...
Aha ! Such doch mal nach !! undokumentierten !! Funktionen.

-
ich glaube NtQueryInformationFile
-
NtQueryInformationFile ist undokumentiert. Aber habe jetzt schon ein passendes VB-Script gefunden. Nurnoch als DLL kompilieren, und es müsste klappen. Danke trotzdem!
-
Kannste den Link zu dem Script mal posten?
-
Ich habe mich einbisschen undeutlich formuliert. Es handelt sich lediglich um eine Erklärung, wie man das mit VB anstellt. Ein Kollege versucht das dann umzusetzen, und den Code als DLL zu kompilieren, sodass ich sie in mein Programm laden kann. Gibt zwei Links für die VB Variante:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=782257&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1129850&SiteID=1Mittlerweile habe ich auch schon einen Code in C++ gefunden, die darin verwendeten Funktionen sind aber z.T. undokumentiert, sie sind alle in der ntdll.dll definiert. Ich habe diese DLL mal unter Vista untersucht, und sie tatsächlich noch in der Exporttabelle finden können, obwohl die MSDN schreibt, dass ein paar äquivalente Funktionen in nächsten Windowsversionen höchstwahrscheinlich nichtmehr vorhanden sind.
http://forum.sysinternals.com/printer_friendly_posts.asp?TID=5806Ich denke mal, ich muss die Funktionen (NtQueryInformationFile()...) direkt aus der DLL laden, um sie dann anwenden zu können. Evtl. geht's aber auch ohne.
MSDN schrieb:
NtQueryInformationProcess may be altered or unavailable in future versions of Windows. Applications should use the alternate functions listed in this topic.
Höchstwahrscheinlich trifft das eben auch für die anderen NT Funktionen zu.
MSDN schrieb:
This function has no associated import library. You must use the LoadLibrary and GetProcAddress functions to dynamically link to Ntdll.dll.
-
Holla...
Danke.
Also doch nur mit der native API
Naja, man kann nicht alles haben
-
Ja, selbst in VB sind keine Funktionen dafür definiert, so wie es im Forum zu sein scheint, also bleibt der Lösungsweg der selbe. Da ist mir C++ doch um einiges lieber
Zudem habe ich herausgefunden, dass die NT Funktionen nicht auf 64 Bit Systemen arbeiten. Hier der volle Code, allerdings nicht kompilierbar, da der Poster seine Importheader "ntdll.h" nicht angegeben hat...http://forum.sysinternals.com/forum_posts.asp?TID=7974&KW=
majkinetor schreibt, wenn man auf die NT Funktionen verzichten will/muss, muss man auf Kernelroutinen zugreifen

-
-
Vielen Dank für den Link. Das bringt mich hoffentlich weiter.
-
Kann vielleicht jemand ein kleines Beispiel(auch teilweise) posten wie man den Benutzer einer datei auslesen kann.
Wäre echt nett
schon mal danke
-
Fencer schrieb:
Kann vielleicht jemand ein kleines Beispiel(auch teilweise) posten wie man den Benutzer einer datei auslesen kann.
Wäre echt nett
schon mal dankeIst es denn so schwer sich wenigstens mal die erste Seite anzugucken?
http://www.c-plusplus.net/forum/viewtopic-var-t-is-185943.html
Und was hat die Frage hier im Thread verloren?
-
ratefuchs schrieb:
ich glaube NtQueryInformationFile
ne, NtQuerySystemInformation() mit dem info level 'SystemHandleInformation' liefert alle geöffneten handles inclusive namen (falls vorhanden, also auch dateinamen) und process id. damit lässt sich bestimmt was basteln.
--> http://codeguru.earthweb.com/forum/showthread.php?t=423112

-
pale dog, der Code ist perfekt! Vielen Dank.
