Impossibile creare una variabile di ambiente nel registro
-
09-06-2019 - |
Domanda
Ho un'azione di installazione personalizzata che aggiorna l'ambiente PATH e crea una variabile di ambiente aggiuntiva.L'aggiunta di una directory alla variabile di percorso esistente funziona correttamente, ma per qualche motivo i miei tentativi di creare una nuova variabile di ambiente non hanno avuto successo.Il codice che sto utilizzando è:
using (RegistryKey reg = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment", true))
{
reg.SetValue("MYVAR", "SomeVal", RegistryValueKind.ExpandString);
}
Modificare:Il sistema operativo è XP a 32 bit e, per quanto ne so, funziona silenziosamente.
Soluzione
C'è qualche motivo per cui devi farlo attraverso il registro?
In caso contrario, puoi utilizzare Environment.SetEnvironmentVariable() da .NET 2.0.Consente l'impostazione in base alla macchina, al processo o all'utente.
Altri suggerimenti
Di che sistema operativo si tratta?È su un sistema a 64 bit?Qual è la natura del fallimento:silenzioso o viene lanciata un'eccezione?
Potresti provare a correre ProcessMonitor e vedere se vede il tentativo di impostare il valore.
Perché stai utilizzando una CustomAction per questo?Windows Installer supporta l'aggiornamento delle variabili di ambiente in modo nativo.
Si è scoperto che c'era un altro problema che impediva la chiamata del codice nella mia domanda.Tuttavia, stavo utilizzando l'assembly Win32 perché il codice di esempio che stavo seguendo è stato scritto prima che l'assembly Environment diventasse disponibile.Quindi grazie Peter per aver segnalato l'API dell'ambiente.