Autor |
Beitrag |
SAiBOT
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Sa 30.08.08 22:29
Was ist FileUnlocker
Mit diesem Programm kann man FileHandles aller Prozesse auflisten und schliessen.
Dies löst zB. das Problem "Datei kann nicht gelöscht werden, da sie von einer anderen Person oder einem anderen Programm benutzt wird", einfach Dateiname in den Filter eintragen und alle offenen Handles schliessen.
Informationen
-Keine Administrationsrechte nötig
-Arbeitet im Usermode (Ring3)
-Pur Delphi
System Voraussetzungen
-2000/XP, Vista
Geplante Funktionen
-Übersicht aller Prozesse und deren geladenen DLL's und offenen Handles.
Screenshot

_________________ Debuggers don't remove bugs, they only show them in slow-motion.
Zuletzt bearbeitet von SAiBOT am Mi 26.08.09 00:16, insgesamt 9-mal bearbeitet
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Sa 30.08.08 23:12
Hört sich viel versprechend an, aber leider funktioniert es bei mir nicht richtig. Die Prozesse werden richtig erkannt, doch leider wird kein einziges Handle erfasst - obwohl ich ein paar Programme probiert habe, die die Datei garantiert nicht sofort wieder schließen.
Ich benutze Windows 2000 SP4, vielleicht ist da irgendetwas anders wie unter Vista.
Vielleicht findest du ja den Fehler, viel Glück. 
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Sa 30.08.08 23:41
Yogu hat folgendes geschrieben: | Hört sich viel versprechend an, aber leider funktioniert es bei mir nicht richtig. Die Prozesse werden richtig erkannt, doch leider wird kein einziges Handle erfasst - obwohl ich ein paar Programme probiert habe, die die Datei garantiert nicht sofort wieder schließen.
Ich benutze Windows 2000 SP4, vielleicht ist da irgendetwas anders wie unter Vista.
Vielleicht findest du ja den Fehler, viel Glück.  |
Die Konstante OB_TYPE_FILE ist auf jeder OS-Version anders.
Auf XP hat sie den Wert 28, wobei sie auf Vista 25 hat.
Ich nehme an daran wird es liegen, werde mal sehen ob ich den Wert für Win2k finde.
Edit: Habe den Wert gefunden, sollte jetzt auch unter Win2000 laufen.
Update wurde hochgeladen
MfG
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: So 31.08.08 00:37
Hm...
wenn ich die neue Version starte, blinken einige Explorerfenster auf (z.B. Schnellstartleiste in der Taskleiste oder der Explorer selber), der Mauszeiger verwandelt sich für einige Sekunden in "Anwendung wird gestartet" (Maus mit Sanduhr), und danach ist Schluss. Der Prozess ist noch da, mit 4.292KB verbrauchtem Arbeitsspeicher, aber 0% CPU-Auslastung.
Es wird weder ein Fenster angezeigt, noch ist das Programm im Task-Manager unter "Anwendungen" zu finden. Auch nach einer Minute tut sich noch nichts.
Irgendetwas stimmt wohl noch nicht. 
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: So 31.08.08 01:03
Yogu hat folgendes geschrieben: | Hm...
wenn ich die neue Version starte, blinken einige Explorerfenster auf (z.B. Schnellstartleiste in der Taskleiste oder der Explorer selber), der Mauszeiger verwandelt sich für einige Sekunden in "Anwendung wird gestartet" (Maus mit Sanduhr), und danach ist Schluss. Der Prozess ist noch da, mit 4.292KB verbrauchtem Arbeitsspeicher, aber 0% CPU-Auslastung.
Es wird weder ein Fenster angezeigt, noch ist das Programm im Task-Manager unter "Anwendungen" zu finden. Auch nach einer Minute tut sich noch nichts.
Irgendetwas stimmt wohl noch nicht.  |
Denn habe ich spontan keine Ahnung  , ich habe zwei Systeme (XPSP2,Vista) und da gehts ohne Probleme  , werde mal sehen was sich da machen lässt.
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 31.08.08 01:24
Sehr schön. Aus reiner Neugier würede mich der Sourcecode interessiren. Nicht, dass ich dein program nachbauen wollte. Ich will es einfach nur wissen, weil ich mir da schon selber mal den Kopf drüber zerbrochen habe. Mich würden konkret die Funktionen interessieren, mi der du die offenen Dateihandle ausliest und wie du sie schließt. Falls du es nicht Opensource machen willst, würde ich mich auch über eine PN mit den Funktionen freuen. Wie gesagt, reine Neugier, wie es geht.
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: So 31.08.08 01:42
Habe deinen FileUnlocker eben auf meiner W2KSP4-Maschine getestet. Soweit ich das bis jetzt sehe, läuft es einwandfrei.
cu delphi10
_________________ Salus populi suprema lex esto
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 31.08.08 03:24
Mir ist gerade was aufgefallen. Eigentlich ist die ProzessID eine absolut nebensächliche Information. Wenn ich wissen will, welcher Prozess eine bestimmte Datei geöffnet hat, hilft mir die ProzesID sehr wenig. Der Prozessname wäre da wesentlich hilfreicher. So muss ich immer erst im Taskmanger gucken, welche ProzessID zu welchem Prozess gehört. Also zeig den Prozessnamen an und nicht dessen ID.
|
|
wirbeldelphi
      
Beiträge: 29
|
Verfasst: So 31.08.08 15:51
Ich hab das gleiche Problem wie Yogu. Allerdings mit XP.
_________________ Ich bin keine Signatur - ich putz hier nur.
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: So 31.08.08 23:16
Luckie hat folgendes geschrieben: | Sehr schön. Aus reiner Neugier würede mich der Sourcecode interessiren. Nicht, dass ich dein program nachbauen wollte. Ich will es einfach nur wissen, weil ich mir da schon selber mal den Kopf drüber zerbrochen habe. Mich würden konkret die Funktionen interessieren, mi der du die offenen Dateihandle ausliest und wie du sie schließt. Falls du es nicht Opensource machen willst, würde ich mich auch über eine PN mit den Funktionen freuen. Wie gesagt, reine Neugier, wie es geht. |
fürs' listing:
NtQuerySystemInformation
NtQueryInformationFile
NtQueryObject
und für das schliessen:
CreateRemoteThread in verbindung mit CloseHandle
Luckie hat folgendes geschrieben: | Mir ist gerade was aufgefallen. Eigentlich ist die ProzessID eine absolut nebensächliche Information. Wenn ich wissen will, welcher Prozess eine bestimmte Datei geöffnet hat, hilft mir die ProzesID sehr wenig. Der Prozessname wäre da wesentlich hilfreicher. So muss ich immer erst im Taskmanger gucken, welche ProzessID zu welchem Prozess gehört. Also zeig den Prozessnamen an und nicht dessen ID. |
Ja habe ich mir auch schon gedacht, wurde geändert!
Update hochgeladen
delphi10 hat folgendes geschrieben: | Habe deinen FileUnlocker eben auf meiner W2KSP4-Maschine getestet. Soweit ich das bis jetzt sehe, läuft es einwandfrei.
cu delphi10 |
Denn ist es ja kein OS spezifisches Problem
@ Yogu& wirbeldelphi:
Versucht es mit der 0.0.3er Version, wenns' jetzt nicht geht habe ich leider keine Ahnung woran es noch liegen könnte 
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
wirbeldelphi
      
Beiträge: 29
|
Verfasst: Mo 01.09.08 17:26
Ja, genau das gleiche. Der Prozeß lebt zwar noch, aber keine Gui, 0% Cpu Last - Ende.
Bindest du vllt irgendwelche DLLs mit ein und lieferst die nicht mit?
Übrigens: wenn man sich die Datei mit Restorator ansieht ( www.bome.com/Restorator/index.html), dann werden einige Ressourcen in der exe als korrupt angezeigt.
_________________ Ich bin keine Signatur - ich putz hier nur.
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mo 01.09.08 17:30
wirbeldelphi hat folgendes geschrieben: | Ja, genau das gleiche. Der Prozeß lebt zwar noch, aber keine Gui, 0% Cpu Last - Ende.
Bindest du vllt irgendwelche DLLs mit ein und lieferst die nicht mit?
Übrigens: wenn man sich die Datei mit Restorator ansieht (www.bome.com/Restorator/index.html), dann werden einige Ressourcen in der exe als korrupt angezeigt. |
Ist nur die Exe,
Das die Resourcen korrupt angezeigt werden liegt daran das die Exe gepackt ist!
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
wirbeldelphi
      
Beiträge: 29
|
Verfasst: Mo 01.09.08 17:46
Kannst du nochmal ne ungepackte Version posten bitte? Damit klar ist, dass es nicht daran liegt.
PS: beim zwölften oder dreizehnten Start klappt es. Scheint irgendein Laufzeitproblem zu sein..?
_________________ Ich bin keine Signatur - ich putz hier nur.
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Mo 01.09.08 19:15
Wie ich ja schon schrub: Unter W2kSP4 alles ok. Aber eine Bitte, könntest du im Handle-Name statt \device\Harddisk die Partition und die logische Drivebezeichnung einbauen? Zwei Funktion dazu, die dazu ganz nützlich sind (Autor unbekannt):
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| Function TForm3.GetPartitionName(const ADrive: Char): String; var unused: Cardinal; buffer: array[0..19] of Char; x : Integer; begin Result:=''; if (GetDriveType(PChar(Format('%S:\',[ADrive]) ) ) >1) and (GetVolumeInformation(PChar(ADrive+':\'),@buffer[0], SizeOf(buffer),nil,unused,unused,nil,0)) then begin For x := 0 to High(buffer) do begin Buffer[x] := UpCase(buffer[x]); If Buffer[x] = 'ä' then Buffer[x] := 'Ä'; If Buffer[x] = 'ü' then Buffer[x] := 'Ü'; If Buffer[x] = 'ö' then Buffer[x] := 'Ö'; end; Result := Buffer; end else Result := 'Error'; end;
Function TForm3.GetLogicalDrivesStr(const NotAssigned: Boolean = FALSE): String; var DriveMap: DWORD; i,FirstDrive: Char; begin DriveMap := GetLogicalDrives; FirstDrive := 'A'; if (NotAssigned) then begin DriveMap := NOT DriveMap; FirstDrive := 'C'; end; Result := ''; for i := FirstDrive to 'Z' do if (DriveMap and (1 shl (Ord(i) -65))) <> 0 then Result := Result +i; end; |
cu delphi10
_________________ Salus populi suprema lex esto
|
|
SAiBOT 
      
Beiträge: 323
Erhaltene Danke: 6
XP SP2; 7
D7; D2009
|
Verfasst: Mo 01.09.08 20:41
wirbeldelphi hat folgendes geschrieben: | Kannst du nochmal ne ungepackte Version posten bitte? Damit klar ist, dass es nicht daran liegt.
PS: beim zwölften oder dreizehnten Start klappt es. Scheint irgendein Laufzeitproblem zu sein..? |
0.0.4 ist ungepackt.
delphi10 hat folgendes geschrieben: | Wie ich ja schon schrub: Unter W2kSP4 alles ok. Aber eine Bitte, könntest du im Handle-Name statt \device\Harddisk die Partition und die logische Drivebezeichnung einbauen?
cu delphi10 |
wurde geändert.
Update wurde hochgeladen 
_________________ Debuggers don't remove bugs, they only show them in slow-motion.
|
|
wirbeldelphi
      
Beiträge: 29
|
Verfasst: Mo 01.09.08 21:01
0.0.4 startet nun problemlos und jedes mal.
Aber listet im Gegensatz zu 0.0.3 keinerlei geöffnete Dateien auf. (geht das überhaupt bei nem Windows..?)
Processcount = 46
Handlecount = 0
Auch Refresh listet nichts.
Was das packen der Datei betrifft: UPX ist ein freier Exepacker der wirklich problemlos geht: upxshell.sourceforge.net/
Dein tool wäre damit ~200kB klein.
_________________ Ich bin keine Signatur - ich putz hier nur.
|
|
delphi10
      
Beiträge: 447
Erhaltene Danke: 2
W2K, XP, Vista64, Win7 64
RAD-Studio 2010
|
Verfasst: Di 02.09.08 00:12
Habe ich gerade eben laufenlassen. Also, da ist noch nicht alles richtig. Er zeigt mir nur teilweise die Laufwerksbezeichner an und die sind leider falsch. Es wird z. Bspl. "F:\name..." ausgegeben, das ist aber bei mir ein zur Zeit leeres DVD-Laufwerk.
Kannst ja bei Gelegenheit noch mal eine Analyse machen. Danke.
cu delphi10
Edit 2.9.08: O.g. Fehler treten nur unter W2K auf. Unter XPSP2 werden die Laufwerksbezeichner richtig angezeigt. Gerade eben getestet.
_________________ Salus populi suprema lex esto
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 02.09.08 09:16
Ich habe das Programm jetzt zweimal gestartet und jedes mal erschien nur der Prozess im Taskmanager aber kein Programmfenster. System ist Windows XP SP2.
|
|
gehstock
      
Beiträge: 19
Erhaltene Danke: 2
|
Verfasst: Di 02.09.08 11:38
WS2003 ebenfalls keine Auflistung der Prozesse
Einloggen, um Attachments anzusehen!
|
|
jasocul
      
Beiträge: 6393
Erhaltene Danke: 147
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Di 02.09.08 11:51
Gleiches Phänomen, wie bei Luckie.
System: XP Pro SP3
|
|