Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Cancellare chi ha cancellato

Salve.
Dopo aver disinstallato, con un secondo programmino,
il programma principale, mi rimane da cancellare
il file eseguibile relativo a questo secondo programmino
che ha cancellato il programma principale.
Non volendo farlo cancellare manualmente all'utente,
come faccio per eliminarlo?
Avevo pensato ad un un righetta in "RunOnce" nel Registro
tipo:
 
"Programmino"   "c:\windows\explorer.exe /delete
c:\miacartella\programmino.exe"
oppure
"Programmino"   "c:\windows\shell32.dll /delete
c:\miacartella\programmino.exe"
che mi avrebbe cancellato il file programmino.exe al successivo
riavvio
di Windows e tale righettina, tra l'altro, se ne sarebbe poi andata da
sola.
Ma non so scrivere questa righettina.
Suggerimenti?
Grazie
Andrea R.

 Suggerimenti?
Sei su NT o 95/98 ?
Se č buona la seconda puoi usare un sistema alternativo. Crea
un file di nome Wininit.ini nella dir di Windows, e dentro scrivici
queste righe:
[rename]
NUL=C:\WINDOWS\TEMP\buttami.exe
I file possono essere anche spostati, rinominati eccetera.
La sintassi generica č:
[rename]
NuovoNome=VecchioNome
Attenzione, tutti i nomi di file devono essere in formato Dos 8.3.
Per maggiori informazioni, e per la versione NT:
Q140570 HOWTO: Move Files That Are Currently in Use
http://support.microsoft.com/support/kb/articles/Q140/5/70.asp
Bye, G.
--
---------------------------------------------
    Le risposte alle tue domande le trovi
    sul Sito Comune di questo NewsGroup:
 
http://www.murialdo.it/it_lang_vb
       ... e nell'help in linea !
---------------------------------------------
Real E-address: 
gaet...@hotmail.com

Grazie, penso che funzionerŕ,
al momento perň non l'ho provato.
Ho trovato anche questo abbastanza
sull'argomento e provo a suggerirlo
(oltre a   MS   Article ID: Q140570):
da 
http://www.vbug.co.uk/magazine/i9/installation.htm
. . . 
At this point Windows 95/98 diverge in behaviour from Windows NT. When
Windows 9x boots, it runs WININIT.EXE which reads WININIT.INI in the
Windows folder. If this file exists, then the Rename section is
examined, for example.
 [Rename]
NUL=C:\Program Files\MyVBApp\UNINSTALL.EXE
C:\TEMP\MSVCTR.DLL=C:\Windows\System\MSVCRT.DLL
Here UNINSTALL.EXE is deleted, and MSVCRT.DLL is installed to the
system folder. Note that while this looks like an ini file, you must
not use WritePrivateProfileString to add entries, otherwise you run
the risk of overwriting existing entries. For example the call
WritePrivateProfileString "Rename", "NUL",
"C:\TEMP\~SETUP.ABC","WININIT.INI"
would overwrite the entry deleting UNINSTALL.EXE. A tip here is to use
the Line Input syntax which more or less disappeared from VB’s help
after VB3. For example
Do Until EOF(iFile)
   Line Input #iFile, sTemp
   Print #iNewFile, sTemp
   If StrComp(Trim$(sTemp), "[Rename]", vbTextCompare) = 0 Then Call
AddLines
Loop 
Installing a File - WinNT
Assuming the user does not have administrator access to the system,
there is a problem. With these rights we would call
MoveFileEx FileA, FileB, MOVEFILE_REPLACE_EXISTING +
MOVEFILE_DELAY_UNTIL_REBOOT
and reboot, job done (the MOVEFILE_DELAY_UNTIL_REBOOT flag is ignored
in Win9x)
Without admin rights this call will fail, so we need to find a way of
running this line with administrator priviliges. Firstly, we need to
add some special system rights to the computers to be remotely
upgraded. I later found that exactly these settings are required for
enabling e-mail on a SQL Server which put my mind at rest that I
wasn’t doing anything too dangerous...
. . . 
Andrea R.

Ho trovato come usare la voce RunOnce nel Registro:
per  Win9x:
 
COMMAND.COM
 /C DEL C:\miacartella\programma.exe
per NT:
CMD.EXE /C DEL C:\miacartella\programma.exe
Andrea R.