Newsgroup: it.comp.lang.visual-basic
Titolo: se l'applicazione si uccide

Salve a tutti,
qualcuno ha idea se (e come) un applicazione in Vb
possa essere in grado di auto-eliminarsi?
grazie,
vittorio
--------------------------------
Inviato via 
http://usenet.libero.it

 possa essere in grado di auto-eliminarsi?
  mmmm intendi cancellare il proprio .exe


> mmmm intendi cancellare il proprio .exe
 esatto.
magari con un timer.
Vittorio


 magari con un timer.
Crea un nuovo progetto, in Form1 incolla il codice qui sotto, salva e
compila.
Prova a lanciare l'exe con l'ultima riga commentata.
Poi scommenta, ricompila e lancia di nuovo.
Option Explicit
Private Sub Form_Unload(Cancel As Integer)
    Dim fNum As Long, fName As String
    fName = App.Path & "\autokill.bat"
    fNum = FreeFile
    Open fName For Output As #fNum
    Print #fNum, "@echo off"
    Print #fNum, ":begin"
    Print #fNum, "del " & App.Path & "\Progetto1.exe"
    Print #fNum, "if exist " & App.Path & "\Progetto1.exe goto begin"
    Print #fNum, "del " & App.Path & "\autokill.bat"
    Close #fNum
'    Shell App.Path & "\autokill.bat"
End Sub

 Poi scommenta, ricompila e lancia di nuovo.
Non funziona..nei file.bat posso scrivere in vbscript ?
Non zapevo ;)
Ciao


pui provare con un file vbs, però per essere eseguito ha
bisogno che sulla macchina host sia installato
wsh
--
bye BlackMagic
ICQ# 85485468

 ha scritto nel messaggio
news:b881cu$717mj$1...@ID-150836.news.dfncis.de...

Non è possibile fare in modo che l'applicazione si metta da sola sulla RAM
cossichè all'avvio successivo l'applicazione è scomparsa?
Feli
-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----
http://www.newsfeeds.com
 - The #1 Newsgroup Service in the World!
-----==  Over 80,000 Newsgroups - 16 Different Servers! =-----

nei file.bat posso scrivere in vbscript ?
quello NON è vbscript, ma normalissimissimo DOS


il problema principale è che windows  *non ti permette*
di cancellare un file che è in uso, sia un eseguibile,
una dll oppure un file temporaneo, se il file è in uso,
e quando la tua applicazione "gira" il file eseguibile è in uso,
non puoi cancellarlo, se quello che vuoi fare è simulare
il funzionamento di back orifice, che fa una cosa simile,
ovvero dopo essere stato lanciato sembra che si cancelli da solo
dal disco, in realtà è un'altra applicazione che cancella questo
dopo essere stata avviata, comunque, salvo smentite da chi ha altre
fonti, windows *non ti permette* di cancellare i file in uso


 quello NON è vbscript, ma normalissimissimo DOS
si, me ne sono reso conto solo stamattina..
I'm sorry!
Ciao!

 I'm sorry!
Non essere sorry,
la vita è very hard !                   ;-)

 Non funziona..
funziona. l'ho provato 3-4 volte prima di postare.
ciao


 di cancellare un file che è in uso, sia un eseguibile,
cercare inuse.exe


 ..nei file.bat posso scrivere in vbscript ?
Cioe' ???
Sono due linguaggi differenti ma con l'uno (o l'altro)
puoi lanciare entrambi
--
Fosco


il problema resta e resta esatto anche quello che ho scritto,
inuse.exe è un'utility esterna e non fa parte di windows :-))


io ho usato 2 eseguibili:il pprimo è il progetto, il secondo ha tutte le
informazioni per eliminare tutti i file del progetto. fai in modo che il
progetto, lanci il secondo eseguibile e chiudi il progetto.
L'elimiantore, attende qualche tempo per essere sicuro che il progetto si
sia chiuso (io ho risolto usando doevents in un loop), e procede con
l'eliminazione di tutti i file del progetto. Così l'unica cosa che rimane
del tuo programma è l'eliminatore. Per sicurezza potresti passare una chiave
all'eliminatore senza la quale non funziona, per evitare che venga eliminato
accdentalmente dalla curiosità dell'utente.
Non so se sono stato abbastanza chiaro, memmai chiedi. Non sono molto bravo
a spiegarmi


 inuse.exe è un'utility esterna e non fa parte di windows :-))
gia' gia' scusate un attimo ...
[Gigio.state = "lamer"]
ok , allora ai bei tempi della lamer-era di ognuno di noi, smanettando con
sub7 ci si imbatte appunto nello "melting" dell'exe in pratica nel server vi
sono registrate una serie di operazioni che "scrivono", come suggerito da
no-op, un altro file in grado di cancellare il rpimo quindi le opzioni sono
molte :
la chiave runonce del registry aiuta molto , in pratica lanci l'exe, l'exe
crea un altro e lo mette nella runonce o nella ram , l'exe principale si
chiude e ... se lo smelter e' nella ram cancella al volo l'exe , altrimenti
al riavvio la chiave run at once lancia l'exe2 che cancella l'exe1
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/

 non puoi cancellarlo
Un batch può addirittura cancellare sè stesso... il problema è che
rimane a video l'errore DOS, ma lo può fare, e il prog di no-op lo
dimostra.
Che ci siano altri modi più puliti è un altro discorso :-)
Per esmpio una chiave nel wininit.ini per W9X oppure la MoveFileEx
(o scrivere direttamente nella chiave PendingFileRenameOperations)
per i S.O. di classe NT, entrambi i metodi però vogliono il riavvio.
Paresembrasidicesimormora che si possa fare anche senza il
riavvio, ma è uno "SporcoTrucco©" e non so se funziona.
Bye, G.

 ha scritto

(scusa il ritardo, ero via)
be', anche una console in sostanza non fa parte del windows che tutti
credono di conoscere :)
inuse comunque e' abbastanza integrato, fa parte dell'rk
http://www.microsoft.com/windows2000/techinfo/reskit/tools/existing/inuse-o
.
asp
non so per xp
poi, come dice paperino, ci sono i sistemi che prevedono il riavvio (li usa
windows stesso: prova durante un aggiornamento di ie a svuotare la temp, e
dimmi cosa succede al reboot), ecc. ecc.
il meno sporco resta un bat di 6 righe hardcodato nell'exe.
a me nelle prove non arrivava nemmeno un errore dos.
ciao