Gå til innhold

Slette den køyrande .exe-fila...


Anbefalte innlegg

Videoannonse
Annonse
du kan ikke slette exe-filen til en kjørende prosess. enkelt og greit.

 

Avinstalleringsprogrammer er en helt annen sak.

Han sa "etter den har kjørt ferdig"!

 

Edit: Visst det er prat om et eget program skrevet i C foreksempel:

 

printf("Jeg er en noob");

 

Vil dette programmet terminere seg selv dersom ma ikke legger inn en pausekommando. :hrm:

Endret av ^FeKtus
Lenke til kommentar

jeg svarte på om den kunne slette seg selv. leste kanskje litt feil. Uansett må en avinstallasjon kjøres etterpå da. (tror du sliter med å gjøre dette automatisk, da selve exe-filen må starte denne, og blir da fortsatt kjørende selv i bakgrunnen). Skal du avinstallere, må du også ha en installasjon først.

Lenke til kommentar

hmm... bra spørsmål så jeg prøvde meg litt ut.

la oss si at du bruker en bat fil istede, den har muligheten til å slette seg selv.

1 Jeg starter Uninstall programmet.

2 programmet fjerner alt av reg. filer. mapper osv. alt utenom programmet selv og mappene som det ligger i.

3 programmer genererer en bat fil med en delay på fks 10 sek. som blir lagt på et sted som ikke kommer i komflikt med fjerningen (fks c:\).

4 programmet dealokerer alt av minne handlere osv. , så rett før programmer slutter starter det bat filen som et separat program så avsluttes uninstallen.

5 bat filen kjører å sletter alle spor.

 

Jeg mener å huske at proffene lager et skript som kjøres i av en windows kommando/API kall, men jeg husker ikke hvilke.

Lenke til kommentar

Alternativ til bat-fil er å bruke MoveFileEx med MOVEFILE_DELAY_UNTIL_REBOOT.

 


Prototype:

BOOL MoveFileEx(
  LPCTSTR lpExistingFileName,
  LPCTSTR lpNewFileName,
  DWORD dwFlags
);


Eks:

MoveFileEx(_T("c:\\self.exe"), 0, MOVEFILE_DELAY_UNTIL_REBOOT);

 

Filen blir da slettet ved neste reboot - og du slipper unna med kun en kodelinje :)

Lenke til kommentar
lstor@mputt:~$ cp /bin/rm .

lstor@mputt:~$ ./rm ./rm

lstor@mputt:~$ ls rm

ls: rm: Ingen slik fil eller filkatalog

 

Norsk:

1) Kopier slette-programmet til nåværende mappe

2) Slett slette-programmet i nåværende mappe med sletteprogrammet i nåværende mappe

3) Vis at slette-programmet i nåværende mappe ikke eksisterer

 

Delvis off-topic, men uansett: Tråden burde befinne seg i Programmering->Windows. Så lenge tråden opprettes i et plattformuavhengig forum får dere tåle at jeg poengterer andre løsninger på andre plattformer ;)

Lenke til kommentar

nemmen myubi da, er ikke c/c++ engang det du foreslo :tease:

 

int main(int argc, char **argv) {
if(!unlink(argv[0]))
 printf("%s er bortevekk\n",argv[0]);
else
 printf(":(\n");
return 0;
}

u@w:~/waa$ ls -la

total 28

drwxr-xr-x    2 user    users        4096 Aug 28 05:51 ./

drwx--x--x  23 user    users        4096 Aug 28 05:41 ../

-rwxr-xr-x    1 user    users      13388 Aug 28 05:51 delself*

-rw-r--r--    1 user    users        130 Aug 28 05:51 delself.c

u@w:~/waa$ delself

delself er bortevekk

u@w:~/waa$ ls -la

total 12

drwxr-xr-x    2 user    users        4096 Aug 28 05:52 ./

drwx--x--x  23 user    users        4096 Aug 28 05:41 ../

-rw-r--r--    1 user    users        130 Aug 28 05:51 delself.c

u@w:~/waa$

Lenke til kommentar

Er heilt inni granskogen tåpeleg å skrive at det ikkje høyrer til i dette forumet. Windows-forumet handlar ikkje om C++, så om eg hadde fått svar hadde det garantert berre vore: "Prøv i C++-forumet, du.". Det som heller ville vore aktuelt var å endre tittelen til "[Windows] Korleis slette den køyrande fila".

 

Korleis lagar ein forresten ein delay i bat? Nokon som veit om ein tutorial til .bat-filer?

 

Redigert:

 

Trudde dette skulle fungere, noko det ikkje gjer: :cry:

 

    ofstream out("dkh.bat");
   out << ":: Denne fila er heilt midlertidig, og vil forsvinne automatisk.\n"
 	"echo off\n"
 	"ping -n 5 localhost > nul\n"
 	"del kh.exe\n"
 	"del dkh.bat";

   system("dkh.bat");

Endret av knuto
Lenke til kommentar

Redigert: Virker som dette er teknisk umuleg. (har testa på 2 datamaskinar med Win XP Pro). Det viser seg bat-fil klarer ikkje å slette seg sjølv om ho er starta av ein annan prosess, men om ho blir starta manuelt går det fint. Eg fatter ikkje kvifor, for det virker ikkje svært logisk, men noko seier meg at det er eit sikkerheitspåfunn frå Microsoft.

Endret av knuto
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...