knuto 0 Report post Posted August 27, 2005 Hallo! Eg har laga eit lite "eingongsprogram", og lurar på korleis eg kan få windows til å slette .exe-fila når ho har køyrt ferdig. Det må jo være teknisk mogleg, ellers ville det jo ikkje gått ann å lage avinstalleringsprogram ... Quote Share this post Link to post
Flexo 0 Report post Posted August 27, 2005 Ved avinstalleringsprogram tror jeg programmet får hjelp av noe som heter "windows installer" til å fjerne det helt... Rett meg visst det er feil! Quote Share this post Link to post
Manfred 32 Report post Posted August 27, 2005 du kan ikke slette exe-filen til en kjørende prosess. enkelt og greit. Avinstalleringsprogrammer er en helt annen sak. Quote Share this post Link to post
Flexo 0 Report post Posted August 27, 2005 (edited) 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. Edited August 27, 2005 by ^FeKtus Quote Share this post Link to post
Manfred 32 Report post Posted August 27, 2005 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. Quote Share this post Link to post
Giddion 3 Report post Posted August 27, 2005 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. Quote Share this post Link to post
Flexo 0 Report post Posted August 27, 2005 Bra svar Giddion, tenkte ikke på .bat fil! Quote Share this post Link to post
knuto 0 Report post Posted August 27, 2005 Det trikset høyrdest kupp ut! Takk! Skal teste det litt seinare Quote Share this post Link to post
JBlack 11 Report post Posted August 27, 2005 Hvem sletter .bat fila? Quote Share this post Link to post
charlie di meola 0 Report post Posted August 27, 2005 del %0 (evt. del %0.bat) skulle funke fint i en batfil Quote Share this post Link to post
kjetil7 0 Report post Posted August 27, 2005 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 Quote Share this post Link to post
☀ ❄ 12 Report post Posted August 27, 2005 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 Quote Share this post Link to post
charlie di meola 0 Report post Posted August 28, 2005 nemmen myubi da, er ikke c/c++ engang det du foreslo 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$ Quote Share this post Link to post
knuto 0 Report post Posted August 28, 2005 (edited) 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: 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"); Edited August 28, 2005 by knuto Quote Share this post Link to post
charlie di meola 0 Report post Posted August 28, 2005 (edited) FILE *f = fopen("temp.bat","w"); fputs("@echo off & ping a.b.c.d -n 5\n",f); fputs("del filen-din.exe & del temp.bat & exit", f); fclose(f); system("start temp.bat"); Edited August 28, 2005 by charlie di meola Quote Share this post Link to post
knuto 0 Report post Posted August 28, 2005 (edited) 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. Edited August 28, 2005 by knuto Quote Share this post Link to post
charlie di meola 0 Report post Posted August 28, 2005 ^^ funka bra i win2k (men det er uansett jalla). google fant noe du kan prøve Quote Share this post Link to post
☀ ❄ 12 Report post Posted August 28, 2005 nemmen myubi da, er ikke c/c++ engang det du foreslo Å finne opp hjulet på nytt for en så liten demonstrasjon var overkill, synes jeg knuto: Dette kan vi vel heller ta i pm. Av nysgjerrighet, hvorfor vil ikke Windows slette en kjørende fil? Av "sikkerhetsårsaker"? Quote Share this post Link to post
knuto 0 Report post Posted August 28, 2005 knuto: Dette kan vi vel heller ta i pm. Det var du som begynte... Quote Share this post Link to post
A_N_K 1 Report post Posted August 28, 2005 Det var da også noe å krangle om Quote Share this post Link to post