Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
.NET Framework
Settare le variabili d'ambiente di windows
sabato 14 gennaio 2006 - 20.30
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
riofly
Profilo
| Newbie
7
messaggi | Data Invio:
sab 14 gen 2006 - 20:30
Ciao a tutti!! E buon anno...!
Ho fatto una applicazione da riga di comando con VB.NET 2003 che dovrebbe leggere e scrivere variabili d'ambiente.
Pensavo di fare tutto in 15 minuti... sapendo dell'esistenza della funzione ENVIRON.
Non pensavo però che fosse così complicato trovare il modo di scrivere queste variabili.
Ho provato ad usare il metodo SHELL per lanciare CMD.EXE :
Shell(Environ("comspec") & " /s /v:on /c SET " & nomeParametro & "=" & valoreParametro)
Questo funziona, non ricevo errori. Però alla fine dell'esecuzione di CMD.EXE non rimane piu nessuna traccia del parametro settato.
Come si risolve questo problema ...?
GRAZIE !! Ciao
Cteniza
Profilo
| Guru
1.509
messaggi | Data Invio:
sab 14 gen 2006 - 23:24
Se tu imposti le variabili di ambiente mettendole così come si trovano sui .bat (PATH,SET, ecc), tali variabili vengono distrutte appena rientri dalla shell.
Impostare "le altre invece" (le stesse variabili ma permanenti) è un lavoraccio abbastanza complesso da fare che ti sconsiglio vivamente intraprendere.
riofly
Profilo
| Newbie
7
messaggi | Data Invio:
sab 14 gen 2006 - 23:32
Non capisco...
Mi puoi fare un esempio di codice?
4 righe messe in croce?
-- RioFly --
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
mar 17 gen 2006 - 16:00
>Non capisco...
>Mi puoi fare un esempio di codice?
>4 righe messe in croce?
Ciao Riofly,
in teoria puoi creare una chiave di registro anche qui:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
Queste sono le variabili d'ambiente system wide.
Invece che crearele manualmente da windows aggiungendo la chiave raggiungi lo stesso scopo.
Per accedere al registro usa le classi del Registry del Framework:
http://www.dotnethell.it/articles/WindowsRegistry.aspx
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
riofly
Profilo
| Newbie
7
messaggi | Data Invio:
ven 20 gen 2006 - 01:15
Ho provato ad aggiungere una chiave in quel percorso di registro, ma a quanto pare fà effetto solamente al riavvio del pc, mentre a me servirebbe sfruttare il settaggio della variabile d'ambiente solo per la sessione di shell aperta attualmente.
Per farvi meglio capire l'utilità di ciò, vi spiego cosa dovrebbe fare il piccolo programma che sto realizzando.
L'ho chiamato SETDRIVE ed accetta due argomenti: la LABEL di una unità (es. di una penDrive) e il nome di una variabile d'ambiente.
Lanciando SETDRIVE da riga di comando, vorrei che mi creasse una variabile d'ambiente con nome indicato nel parametro, e che me la riempisse con la lettera in cui è stata trovata l'unità con l'etichetta di volume indicato nel primo parametro, così che poi posso sfruttare tale variabile d'ambiente nel resto del file CMD per copiare files... ecc...ecc...
Simmpatica idea, no? :)
-- RioFly --
Brainkiller
Profilo
| Guru
7.999
messaggi | Data Invio:
ven 20 gen 2006 - 14:52
>Ho provato ad aggiungere una chiave in quel percorso di registro,
>ma a quanto pare fà effetto solamente al riavvio del pc, mentre
>a me servirebbe sfruttare il settaggio della variabile d'ambiente
>solo per la sessione di shell aperta attualmente.
Forse hai ragione, non ho fatto menzione di questa cosa ma avevo il dubbio anche io che fosse abilitata solo al riavvio del sistema. In realtà manca qualche comando (a me ignoto) per far rinfrescare a Windows le variabili d'ambiente. Infatti se tu provi ad aggiungere una variabile d'ambiente da Risorse del Comptuer, e dando Ok, la lista si rinfresca e aprendo una shell è già presente (senza riavvio).
Modificando invece o aggiungendo una chiave dal registro come ti ho consigliato non c'è questo Refresh e quindi diventa valida solo al riavvio.
>Per farvi meglio capire l'utilità di ciò, vi spiego cosa dovrebbe
>fare il piccolo programma che sto realizzando.
>L'ho chiamato SETDRIVE ed accetta due argomenti: la LABEL di
>Lanciando SETDRIVE da riga di comando, vorrei che mi creasse
>una variabile d'ambiente con nome indicato nel parametro, e
>che me la riempisse con la lettera in cui è stata trovata l'unità
>con l'etichetta di volume indicato nel primo parametro, così
>che poi posso sfruttare tale variabile d'ambiente nel resto
> del file CMD per copiare files... ecc...ecc...
>Simmpatica idea, no? :)
Allora, essendo il fiel che produci un eseguibile da riga di comando, forse puoi fare anche in questo modo.
Che appena avviato nel main() esegui un comando Esterno tramite la classe Process.
Il comando esterno da eseguire è appunto quello che setta una nuova variabile d'ambiente con il comando SET.
ciao
David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !