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.

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top