Entwickler-Ecke

Dateizugriff - Löschen erzwingen


Raezor - Sa 10.03.07 19:03
Titel: Löschen erzwingen
Wie kann ich eine Datei löschen, wenn sie gerade verwendet bzw. Kopiergeschützt oder was weiß ich, ist?
Also soll das Löschen einer Datei erzwungen werden, ohne nachzufragen, auch wenn dadurch schwerwiegende Probleme auftauchen könnten.


Blackheart666 - Sa 10.03.07 19:17

Das wird nicht gehen, und für was sollte das gut sein.


Raezor - Sa 10.03.07 19:46

Seit nicht so neugierig! :P
Was soll daran nicht gehen?
Das löschen ohne abfrage oder das löschen, wobei es gerade verwendet wird?


Blackheart666 - Sa 10.03.07 19:57

Dateien die kopiergeschützt sind kannst Du natürlich löschen, indem Du vor dem Löschen den Kopierschutz aufhebst aber Dateien die in Benutzung sind Nicht.


Delete - Sa 10.03.07 20:00

Wenn Du im Windows-Taskmanager alle Explorer.exe-Instanzen killst, kannst Du über ein Batchfile (oder im CMD-Fenster) jede beliebige Datei löschen - danach im Windows-Taskmanager eine neue Explorer.exe-Instanz starten.


JayEff - Sa 10.03.07 20:10

user profile iconRaezor hat folgendes geschrieben:
Seit nicht so neugierig! :P

( http://www.seitseid.de ) Nun, du musst verstehen: Man könnte das durchaus als Malware interpretieren, vorallem nach deiner Beschreibung
user profile iconRaezor hat folgendes geschrieben:
auch wenn dadurch schwerwiegende Probleme auftauchen könnten.

Da dieses Forum aber Malware nicht unterstützt, wärs gut zu wissen, was du vor hast ;)


Raezor - Sa 10.03.07 21:00

@ JayEff: Das sprachliche Mittel, "gekommen dich holen" ist eine sehr interpretiärstarke Ellipse,...

Zu den andren:
Wenn ich z.b eine meiner exen starte und ein update drüberlaufen lasse, ist die noch aktiv und soll beendet werden und die dann löschen, um eine andere hinzukopieren.

Also, wie kann ich eine Exe im Hintergrund deaktivieren?
Und wie kann ich die dann löschen, weil die man ja in verwendung nicht löschen kann.


JayEff - Sa 10.03.07 21:25

user profile iconRaezor hat folgendes geschrieben:
@ JayEff: Das sprachliche Mittel, "gekommen dich holen" ist eine sehr interpretiärstarke Ellipse,...

Ich verstehe nicht ganz, was sprachliche Stilmittel mit deinem Problem oder dem Fehler in deiner Rechtschreibung zu tun hat, aber ...
Ein Programm kannst du schließen, in dem du das Handle seines Fensters herausfindest ( => Suche in: Delphi-Forum, Delphi-Library X-SPY und per Suche in: Delphi-Forum, Delphi-Library SENDMESSAGE WM_CLOSE sendest.


Raezor - Sa 10.03.07 23:30

Ya ya, lachd reuig.

Zurück zu meinem Problem.
Es würde dann so aussehen?:

Quelltext
1:
SENDMESSAGE.WM_CLOSE(hubschrauber.exe);                    

Oder?


JayEff - So 11.03.07 00:37

Auf meine Links klicken ... :roll: Unter dem Suchwort "Sendmessage" wirst du Sendmessage sicher niemals als Klasse funden :roll:

Wie schon gesagt, du brauchst das HANDLE des Fensters das du schließen willst.


Force - So 11.03.07 02:02

Ihr müsst nicht extra das Programm dafür schließen!

Es geht auch einfach, wenn man das Handle schließt (weis einer zufällig, wie das geht, ich such schon die ganz Zeit danach ^^)

Siehe auch: Unlocker [http://ccollomb.free.fr/unlocker/#comparison], ein Programm, welches auc Handles schließen kann, ohne das Programm zu schließen - leider ist es nur Freeware und nicht OpenSource :(


Chryzler - So 11.03.07 11:21

CloseHandle?


matze - So 11.03.07 13:26

wenn dir das reicht, kannst du auch mit Suche in: Delphi-Forum MOVEFILEEX die Datei nach dem nächsten Neustart von Windows löschen lassen.


\\BBG// - So 11.03.07 13:50

Jetzt überleg(t) doch bitte mal, warum man manche Dateien nicht löschen soll.
Und was passieren kann, wenn man es trotzdem tut.
Unlocker kann das zwar, ist aber recht unschön z.B. Systemprozessen die Handles zu entziehen...


Chryzler - So 11.03.07 15:30
Titel: Re: Löschen erzwingen
user profile icon\\BBG// hat folgendes geschrieben:
Jetzt überleg(t) doch bitte mal, warum man manche Dateien nicht löschen soll.
Und was passieren kann, wenn man es trotzdem tut.
Unlocker kann das zwar, ist aber recht unschön z.B. Systemprozessen die Handles zu entziehen...

Er hat doch gesagt, er ist sich bewusst, dass das Löschen negative Konsequenzen haben kann. ;)
user profile iconRaezor hat folgendes geschrieben:
Also soll das Löschen einer Datei erzwungen werden, ohne nachzufragen, auch wenn dadurch schwerwiegende Probleme auftauchen könnten.


BenBE - Sa 24.03.07 00:50

Also wie gesagt: Es gibt 4 Möglichkeiten, das zu tun ...

1. Gar nicht ... Ist die sicherste (hat so ihre leichten Nachteile)

2. Via Updater und Sendmessage ... Siehe Links von JayEff oder im SwissDelphiCenter zum Thema Updater schreiben

3. Mit MoveFileEx nach'm nächsten Neustart (wenn's denn unbedingt erzwungenes Löschen sein muss - ist von abzuraten)

4. Über erzwungenes Killen von Handles ... Erfordert sehr viel Hintergrundwissen, die richtigen Units und ein paar Hinweise ...
Sagen wir's so: Ich kenne die Units, die man dafür brauch, auch wo die Informationen dafür stehen (wo man die Handles herbekommt), werde dies hier aber nicht schreiben (geschweige denn Sources liefern. Nur soviel vorweg: Es kann noch so oft ein Handle geschlossen sein, wenn Windows der Meinung ist, es brauch die Datei (und sei's, weil er wieder mal ne Logfile als DLL läd ... (macht er bei mir ständig ... Thx@ProcExp), dann bringt es auch wenig, das Handle zu schließen... Ferner werden die meisten Techniken zum Schließen von Handles von guten AV\Desktop-FWs als Malware mit zumindest einem kleinen Hinweis "Programm installiert Treiber" bzw. "Programm versucht physikalischen Speicher zu verändern" markiert. Ferner sind jegliche mir bekannten Methoden zum Schließen von Handles undokumentiert und erfordern zumindest Administrator ODER Debug-Rechte (std. nur Admin).


Delete - So 25.03.07 04:33

Ganz interessant: http://www.michael-puff.de/Developer/Artikel/2007_02/2007_02_14_Wettruesten.php


Chryzler - So 25.03.07 09:38

user profile iconBenBE hat folgendes geschrieben:
4. Über erzwungenes Killen von Handles ... Erfordert sehr viel Hintergrundwissen, die richtigen Units und ein paar Hinweise ...
Sagen wir's so: Ich kenne die Units, die man dafür brauch, auch wo die Informationen dafür stehen (wo man die Handles herbekommt), werde dies hier aber nicht schreiben (geschweige denn Sources liefern. Nur soviel vorweg: Es kann noch so oft ein Handle geschlossen sein, wenn Windows der Meinung ist, es brauch die Datei (und sei's, weil er wieder mal ne Logfile als DLL läd ... (macht er bei mir ständig ... Thx@ProcExp), dann bringt es auch wenig, das Handle zu schließen... Ferner werden die meisten Techniken zum Schließen von Handles von guten AV\Desktop-FWs als Malware mit zumindest einem kleinen Hinweis "Programm installiert Treiber" bzw. "Programm versucht physikalischen Speicher zu verändern" markiert. Ferner sind jegliche mir bekannten Methoden zum Schließen von Handles undokumentiert und erfordern zumindest Administrator ODER Debug-Rechte (std. nur Admin).

Stimmt, Unlocker installiert auch so einen Treiber "UnlockerDriver5". Scheint ja komplizierter zu sein, als es anfangs aussah. :o


jomeier85 - So 25.03.07 20:40

bin mir nicht sicher ob das auch für das beschrieben problem funktioniert...

aber ich kann damit verdamt viel löschen



Dateien Löschen
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function DeleteFile(const AFile: string): boolean;
var
 sh: SHFileOpStruct;
begin
 ZeroMemory(@sh, sizeof(sh));
 with sh do
   begin
   Wnd := Application.Handle;
   wFunc := fo_Delete;
   pFrom := PChar(AFile +#0);
   fFlags := fof_Silent or fof_NoConfirmation;
   end;
 result := SHFileOperation(sh) = 0;
end;


Moderiert von user profile iconmatze: Code- durch Delphi-Tags ersetzt


Raezor - So 25.03.07 21:49

wo kommt der filepath bzw der file-name hin?


Blackheart666 - So 25.03.07 22:07

user profile iconRaezor hat folgendes geschrieben:
wo kommt der filepath bzw der file-name hin?

Was erwartet denn die function als Parameter !?


Raezor - So 25.03.07 22:17

pFrom := c:\meine\(mark.exe +#0); ?
pFrom := PChar(C.\MEINE\MARK:EXE +#0); ?
pFrom := PChar('c:\meine\mark.exe' +#0); ?
pFrom := PChar(AFile +#0); garnicht hier hin


Blackheart666 - So 25.03.07 22:27

Wie wird denn eine function aufgerufen ?


JayEff - So 25.03.07 23:57

user profile iconBlackheart666 hat folgendes geschrieben:
Wie wird denn eine function aufgerufen ?

:roll: genau das scheint die Frage zu sein - ich verweise, wie so oft, auf den Crashkurs Delphi von Christian S. [http://www.christian-stelzmann.de/artikel/crashkurs.htm].
Die alles beantwortende Codezeile:

Delphi-Quelltext
1:
2:
3:
4:
 if DeleteFile('C:\Die\Datei\die\du\Löschen.willst'then //offensichtlicher gehts nun wirklich nicht.
    showmessage('Hat geklappt!');
 else
    showmessage('Hat nicht geklappt!');

Aber bitte nächstes mal Grundwissen mitbringen, bevor man eine derartige Frage stellt :roll:

Edit:
user profile iconRaezor hat folgendes geschrieben:
pFrom := c:\meine\(mark.exe +#0); ?
pFrom := PChar(C.\MEINE\MARK:EXE +#0); ?
Wobei ich mich echt frage, wie man auf so Ideen kommt, wenn man ein Hallo-Welt-Programm zustande bringt :gruebel:


IngoD7 - Mo 26.03.07 00:07

a.) Er hat anscheinend nur wenig Ahnung.
b.) Er will Dateien löschen, auf Teufel komm raus. Auch, wenn die Kiste dadurch Schiffbruch erleidet.
c.) Seine - nicht veröffentlichte, aber im Profil sichtbare - Signatur lautet übersetzt:

Carpe Diem - nutze den Tag und bastl n paar trojaner
("43 61 72 70 65 20 44 69 65 6D - 6E 75 74 7A 65 20 64 65 6E 20 54 61 67
75 6E 64 20 62 61 73 74 6c 20 6E 20 70 61 61 72, 74 72 6F 6A 61 6E 65 72")

Selbst wenn das nur'n blöder Witz sein sollte, solltet ihr seine Fragen erst weiter beantworten, wenn er erwachsen geworden ist.


JayEff - Mo 26.03.07 00:19

user profile iconIngoD7 hat folgendes geschrieben:
a.) Er hat anscheinend nur wenig Ahnung.
b.) Er will Dateien löschen, auf Teufel komm raus. Auch, wenn die Kiste dadurch Schiffbruch erleidet.
c.) Seine - nicht veröffentlichte, aber im Profil sichtbare - Signatur lautet übersetzt:

Carpe Diem - nutze den Tag und bastl n paar trojaner
("43 61 72 70 65 20 44 69 65 6D - 6E 75 74 7A 65 20 64 65 6E 20 54 61 67
75 6E 64 20 62 61 73 74 6c 20 6E 20 70 61 61 72, 74 72 6F 6A 61 6E 65 72")

Selbst wenn das nur'n blöder Witz sein sollte, solltet ihr seine Fragen erst weiter beantworten, wenn er erwachsen geworden ist.
a) ist definitiv wahr. Aus c) folgt, dass die zweite Aussage von b) wahr ist. Ich mach mir allerdings bei diesem Exemplar eines Scriptkiddies keine großen Sorgen, dass er tatsächlich Malware zustande bringt, zumal er einfachste Funktionsaufrufe nicht schafft.

user profile iconJayEff hat folgendes geschrieben:
user profile iconRaezor hat folgendes geschrieben:
auch wenn dadurch schwerwiegende Probleme auftauchen könnten.

Da dieses Forum aber Malware nicht unterstützt, wärs gut zu wissen, was du vor hast ;)

Das wiederhol ich nochmal ;)

Aber im Endeffekt würd ich gern die Schließung dieses Topics beantragen...


jasocul - Mo 26.03.07 08:20

Ich habe dieses Topic vorläufig gesperrt.
Einwände gegen die Sperrung kann Raezor an den virtuellen Ansprechpartner richten.

Moderiert von user profile iconjasocul: gesperrt