![]() |
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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