Autor Beitrag
moddin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75

WinXP Pro
Delphi 7 Enterprise ;-)
BeitragVerfasst: Do 25.05.06 10:52 
Das kennt man ja : Immer wenn man versucht auf eine bereits in Benutzung befindliche Datei zuzugreifen bekommt man eine Fehlermeldung

Nun habe ich aber neulich das Programm "GFCScape" in die Hände bekommen, das es erlaubt auf bereits benutzte Dateien zuzugreifen wenn man im Menu "Volatile Access" einstellt

Wie könnte man sowas in Delphi umsetzen oder geht das überhaupt?

Danke schonmal im vorraus
drstar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 79
Erhaltene Danke: 2

Windows 8.1/x64
Delphi 10.1
BeitragVerfasst: Fr 26.05.06 16:52 
Müßte grundsätzlich gehen. Man muß ja lediglich das Handle, welche eine Datei exklusiv vereinnahmt und somit sperrt, ermitteln, und anschließend den Bezug des Handles auf die Datei aufheben. Hab ich zwar noch nicht gemacht, sollte aber wohl möglich sein, auch mit Delphi. Daß es geht, zeigt ja chkdsk mit dem Parameter /x (außer bei Systempartitionen).
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 27.05.06 13:55 
Chkdsk ändert nichts an den Handles, sondern sperrt einfach den Zugriff auf's Laufwerk. Daher kann ChkDsk nicht auf einem Datenträger arbeiten, wenn auf diesem gerade exklusiv eine Datei geschrieben wird.

Und zum Entsperren von Handles. Der ProzessExplorer von SysInternals nutzt dazu einen in die Anwendung integrierten Mini-Usermode-Treiber, der die entsprechenden Einträge der Fremdanwendungen manipuliert. Es gibt zwar über Prozess-Embbedding (InjectMe der uallCollection z.B.) Möglichkeiteen für einen Prozess bestimmte Handle zu schließen, aber nur, wenn deren Ordinal-Wert selbst bekannt ist.

Ansonsten empfehle ich an dieser Stelle einfach mal einen Blick ins MSDN in Bezug auf Dateien\Handles sowie ins DDK für die Hintergründe zum Zugriff jenseits der ntdll.dll ;-)

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.