Problémák megoldása, mint eltávolító program maga, vagy változtassa meg a nevét a futtatható fájl Borland

1. Bevezetés
Az interneten keresi programozás fórumok belefutottam kapcsolatos kérdések c a kérdést: „Hogyan juthat a program törlése vagy átnevezése maga a végrehajtás során.” Ez a cikk ismerteti a legalapvetőbb módon.

2. Mit kell?
Borland Delphi 7 kívánatos - a telepítéshez
Notepad (notepad.exe) - álló minden Windows
cmd.exe - álló minden Windows

3. Első lépések
Miért van szükség egy notebook és cmd.exe, kérdezed?
Fogjuk használni a batch fájl, még a probléma megoldására: Wikipedia
Képesek eltávolítani:

Funkció átnevezni:

4. Következtetés
Mint látható, nincs semmi bonyolult itt. Ezek a funkciók nem igényelnek sem semmilyen további modulokat.

Kérem, ha másolja ezt a cikket a honlapon, vagy fórum, vagy blog, válassza ki a kapcsolat a forrás.

Valóban, minden zseni egyszerű.

😉 Köszönöm szépen a cikket))))

Nincs garancia arra, hogy az exe-Schnick mindig tudja, hogy ki kezdete előtt bat-file. Ennek megfelelően, ha eltávolítja a bat-file pofon a csuklóján.

A batch file ping, hogy van egy biztos: próbál egy feladatot egy bizonyos idő interavale.

Egy másik módja, hogy megoldja a problémát. Véleményem szerint egy optimálisabb.

eljárás DeleteSelf;
var
modul: HModule;
buf: array [0..MAX_PATH - 1] char;
p: ULONG;
hKrnl32: HModule;
pExitProcess,
pDeleteFile,
pFreeLibrary: pointer;
kezdődik
modul: = GetModuleHandle (nulla);
GetModuleFileName (modul, buf, sizeof (buf));
CloseHandle (THandle (4));
p: = ULONG (modul) + 1;
hKrnl32: = GetModuleHandle ( 'kernel32');
pExitProcess: = GetProcAddress (hKrnl32, 'ExitProcess');
pDeleteFile: = GetProcAddress (hKrnl32, 'DeleteFileA');
pFreeLibrary: = GetProcAddress (hKrnl32, 'FreeLibrary');
asm
lea eax, buf
tolja 0
tolja 0
tolja eAX
nyomja pExitProcess
tolja p
nyomja pDeleteFile
nyomja pFreeLibrary
áztat
végén;
végén;

DonDD, és a döntés még könnyebb, jól, legalábbis én szeretem a legjobban.

Tehát ez világos, hogy hogyan lehet egy alkalmazást, hogy módosítsa a kódot a végrehajtás során Ez azért lehetséges, szeretnék, hogy egy program postoeniya grafikonok funktsiy.Ideya ezt :? a beviteli mezőbe függvényében igény, akkor egészül ki a program számos alábbi sorokat y: = f ( x), akkor épült a település asztal és rajta menetrend

DonDD, a kódot is fel lehet használni, de ha jobban megnézed - a one-eltávolítási eljárás felvesz annyi 30 sor, és a két eljárás törlésére és átnevezésére vett összesen 38 sor. + A kód csak akkor törölhető.

Alex, teszteltem kódomat két számítógép és minden működött.

DonDD, vagy akik tudják
kérjük, fejtse DeleteSelf kilépési munka, amely alkalmazta a szerelő nélkül (batnikov).

3) És mégis, azt hallottam, hogy mindez nem fog működni az XP és újabb verziók, de ezek a változatok is alkalmazható módszer: \\ 127.0.0.1 \ C $ \ my_program.exe

Köszönjük! De míg ez bonyolult nekem! 😥

enzo_amd, miután a felső ret Slack marad

7C831D93 / CALL hogy FreeLibrary
0.400.001 00400001 (00400000-fogantyúját EXE és 00400001 - néhány szar)

után DeleteFileA paraméterekkel (ami mellesleg visszatér ERROR_ACCESS_DENIED), és végül, ExitProcess

A trükk az, hogy elhagy egy köteg a kódot kell végrehajtani a mélyben kernel32 végén, de XP vagy FreeLibrary UnmapViewOfFile nem tekercsben. Rejtélyes CloseHandle (THandle (4)), túl

Cool kódot. De ... futtatása után kapok az igazán Bat-fájlt, és exe-fájl nem törlődik. Az eltávolított csak akkor indul el azonnal megnyomja az egér gombját.

Kiderült, hogy a Bat-fájl lefut, mielőtt a kilépési program.

Hogyan lehet ezt megoldani,?

Kapcsolódó cikkek