![]() |
Programm löscht sich selber !
Hallo
ich möchte einen Tool programmieren, dass er sich selber nach einer bestimmten Zeit (3 Tage z.B. ) löscht, auch wenn das Programm nicht ausgeführt wird Wie kann man sowas realisieren ? |
Re: Programm löscht sich selber !
Gegenfrage:
Wie kann etwas, dass nicht existiert, etwas machen? Antwort: Indem etwas, was existiert, dies erledigt. |
Re: Programm löscht sich selber !
Ich unterstell dir jetzt einfach mal, dass du hier etwas gegen den Willen des Benutzers löschen willst. Dazu ist zu sagen, dass es nicht möglich ist, sofern der Benutzer ein bischen Ahnung von der Rechtevergabe unter WinNT/XP/Vista hat.
|
Re: Programm löscht sich selber !
Mit Hilfe der Suchfunktion solltest du fündig werden. Man könnte so etwas zum Beispiel mit einer Stapelverarbeitungsdatei machen.
|
Re: Programm löscht sich selber !
Zitat:
|
Re: Programm löscht sich selber !
|
Re: Programm löscht sich selber !
Wie löscht sich ein Programm, das gar nicht läuft?
DIE Antwort würde mich mal interessieren. Das Stichwort "Stapelverarbeitung" führt jedenfalls nicht zum Ziel. |
Re: Programm löscht sich selber !
Also als erstes mal musst du das Programm in den Autostart setzen.
Dann muss eine Datei oder ähnliches erstellt werden wo das aktuelle Datum drin steht. Bei jedem Start wird dann überprüft wieviel Tage vergangen sind. Bei drei Tagen muss das Programm eine Bat datei erstellen die das Programm und sich selbst löscht. Hier mal nen Beispiel was in der .bat stehen muss
Code:
:Repeat
del "Die exe die gelöscht werden soll.exe" if exist "Die exe die gelöscht werden soll.exe" goto Repeat del "Datei zum löschen der exe.bat" ; |
Re: Programm löscht sich selber !
Zitat:
Zitat:
|
Re: Programm löscht sich selber !
Dann müsste also noch ein zeweites Programm erstellt werden, was dann nur dafür da ist nach drei Tagen die .bat zu erstellen und alles dann löscht.
|
Re: Programm löscht sich selber !
Ich vermute, er möchte, dass kein extra Tool läuft und dann geht es nicht.
Es sei denn, man könnte in den Aktenkoffer (oder wie diese ganzen Windows-Tools heißen) irgendetwas eintragen, sodass Windows das Löschen veranlasst. Was soll denn überhaupt der Sinn des Ganzen sein? Mir fällt nichts ein, wo man das sinnvoll einsetzen könnte. |
Re: Programm löscht sich selber !
Windows Aufgabenplaner kann dasselbe machen. Braucht aber Adminrechte.
|
Re: Programm löscht sich selber !
Sieht ein wenig so aus, als sei DRM genau dafür geschaffen worden :P Pfui ...
|
Re: Programm löscht sich selber !
Was hast das ganze mit drm zu tun ?
Wozu brauchst du das ? |
Re: Programm löscht sich selber !
Zitat:
Ich brauche DRM nicht :wink: ... und sicherlich ist es auch hierfür nicht sinnvoll ... Fraglich ist ehr, warum taktaky so erpicht darauf ist, das Programm nach x Tagen (ab wann? ^^) zu löschen. :shock: ... |
Re: Programm löscht sich selber !
Na ganz einfach. Wenn man ein Programm zum download anbietet, soll es sich nach ein paar Tagen eben in Luft auflösen. Sozusagen eine Datei mit Verfallsdatum...
Interessante Sache. Ich glaube, sich selbst löschende Dateien haben sehr viel mit KI zu tun, denn auch wir sind vergesslich... :zwinker: Was war doch gleich nochmal das Thema? :gruebel: |
Re: Programm löscht sich selber !
Selbst wenn er das jetzt hinbekommt. Kommt in ein Paar tegen jemand wie er an und fragt hier im Forum, wie er das verhindern kann. Wenn ich deinem Programm die rechte nehme, dateien zu erstellen oder zu löschen, was willst du dann noch machen. Bau doch lieber eine Demo-Version, da gabs hier im Forum auch schon einige Themen.
Knacken kann man sowas immer. Wer was dran machen will, schaft das auch und wenn die Frage wieder hier im Forum auftaucht!!! |
Re: Programm löscht sich selber !
Und es würde wahrscheinlich sogar der Tatbestand der Computersabotage erfüllt sein, wenn sich das Programm ohne Einwilligung des Benutzers selber löscht.
|
Re: Programm löscht sich selber !
Dazu kommt ja noch die Systemwiederherstellung und und und...
Naja dann lieber eine 30 Tage Testversion o.A. Finde die "Selbstzerstörung" etwas hart und gar nicht Benutzer gerecht. Zudem macht es auch keinen guten Eindruck, wenn man seine Software selbst löscht. |
Re: Programm löscht sich selber !
Liste der Anhänge anzeigen (Anzahl: 1)
Also,
die Loesung fuer Dich: einen Windows-Dienst erstellen, der den "NTFS Last-Access-Timestamp" fuer Dein Programm ausliest und nach gewuenscher Bedingung loescht. How To Service (TUT von MaBuSE): ![]() Muss allerdings garantier sein, das der Schluessel HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\FileSystem\NtfsDisableLastAccessUpdate=0 (DWORD) gesetzt ist. Nachteil: Der Dienst bleibt fuer alle Ewigkeit wenn Du ihn nicht deinstallierst. Sollte das fuer Dich nicht in Frage kommen, kann ich nur mit einer "suicide" Routine dienen, die allerdings das ausfuehren deines "Tools" [:gruebel:] bedingt. WARNUNG: Sie funzt ist aber Quick'N'Dirty. Die Suicide.exe
Delphi-Quellcode:
Sollte selbsterklaerend sein.
program Suicide;
{$APPTYPE CONSOLE} uses SysUtils, TLHelp32, Windows; var fn : PAnsiChar; cnt : Integer; function KillTask(ExeFileName: string): Integer; const PROCESS_TERMINATE = $0001; var ContinueLoop : Boolean; FSnapshotHandle: THandle; FProcessEntry32: TProcessEntry32; begin Result := 0; FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); FProcessEntry32.dwSize := SizeOf(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while Integer(ContinueLoop) <> 0 do begin if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or (UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then Result := Integer(TerminateProcess( OpenProcess(PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0)); ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; CloseHandle(FSnapshotHandle); end; begin if (ParamCount>0) then begin fn := PAnsiChar(ParamStr(1)); if FileExists(fn) then begin if (KillTask(ExtractFileName(fn))=1) then begin cnt := 0; // WHY!!! Warten bis Windoof die Datei Freigegeben hat, solange halt den Versuch // unternehmen zu loeschen. // Dine exe darf nicht scheibgeschuetzt sein. Kann man aber ja noch einbauen. while (FileExists(fn) and (cnt<1000)) do begin inc(cnt); DeleteFile(fn); Sleep(5); end end; end; end; end. In Deinem Tool:
Delphi-Quellcode:
uses
..,ShellApi,QFileCtrls,uHexFile,..; // uHexFile enthaelt die "Binary" der Suicide.exe const fn : String = 'suicide.exe'; // Die Suicide.Exe
Delphi-Quellcode:
uHexFile.pas (Auszug)
procedure CommitSuicide;
var FOutHandle, FOutLength : Integer; myName : String; begin // Create The suicide.exe if not(FileExists(fn)) then FOutHandle := FileCreate(fn) else FOutHandle := FileOpen(fn, fmOpenWrite); FileWrite(FOutHandle,HexFile,SizeOf(HexFile)); FileClose(FOutHandle); // Call suicide.exe myName := ExtractFileName(ParamStr(0)); ShellExecute(Handle, nil, PChar(fn) ,PChar(myName),NIL, SW_HIDE); end;
Delphi-Quellcode:
OK. Wie gesagt. Suboptimal. Aber als Ansatz vielleicht brauchbar.
unit uHexFile;
interface Type ArrOfByte = Array[0..42495] Of Byte; Const HexFile : ArrOfByte = ( 077,090,080,000,002,000,000,000,004,000,015,000,255,255,000,000,184,000,000,000,000, 000,000,000,064,000,026,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,001,000, 000,186,016,000,014,031,180,009,205,033,184,001,076,205,033,144,144,084,104,105,115, 032,112,114,111,103,114,097,109,032,109,117,115,116,032,098,101,032,114,117,110,032, 117,110,100,101,114,032,087,105,110,051,050,013,010,036,055,000,000,000,000,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, . . . 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000, 000,000,000,000,000,000,000,000,000,000,000,000,000); implementation end. Man koennte z.B. in die Suicide.exe noch nen 'Secure Delete' Algorithmus einbauen und das 'HexFile' komprimiert ablegen (z.B. zLib oder LZMA). PS. Bevor Fragen aufkommen. I know 'uBinFile' waere passender. War aber zu faul. //Edit: Service TUT eingefuegt. |
Re: Programm löscht sich selber !
Da mir das ziel nicht gerade legal vorkommt und der Nutzer sich nicht äußern wollte wozu er das braucht mache ich hier erstmal zu. Der Fragesteller darf sich bei mir per PN melden und mir das Ziel des vorhabens glaubhaft nahe bringen.
Wenn ich dann der Meinung bin das hier nicht das Forum missbraucht wurde um etwas illegales zu erreichen gebe ich das Thema wieder frei :) Ich bitte um Verständnis das wir bei diesem Nutzer inzwischen etwas misstrauisch sind. (ganz nebenbei fehlt mir mal wieder der Ansatz zur Eigeninitiative. Ich konnte bisher noch nirgends lesen was der Nutzer selbst gemacht hat oder sich überlegt hat) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz