2010-04-25 18 views
19

Ho una situazione in cui è necessario restituire un percorso di directory leggendo le impostazioni del Registro di sistema. valore del Registro mi restituisce un percorso nel formatoCome espandere la variabile di ambiente% CommonProgramFiles% system in .NET

%CommonProgramFiles%\System\web32.dll 

mentre il codice del consumo si aspetta nel formato

C:\Program Files\Common Files\System\web32.dll 

Come posso risolvere tale percorso di directory nel codice .NET?

risposta

25

Environment.ExpandEnvironmentVariables. Se controlli la creazione del valore del registro, memorizzalo come una stringa espandibile nel registro e l'API del registro lo espande automaticamente per te.

+0

Ho bisogno di un percorso di directory completo e potrebbe essere una qualsiasi altra variabile d'ambiente, non solo% CommonProgramFiles% – Faisal

+2

non capisco il tuo commento, @Faisal. 'ExpandEnvironmentVariables' espande qualsiasi variabile d'ambiente che vede nella stringa che fornisci e produrrà un percorso completo nel caso specifico citato nella domanda. –

+1

ok che funzionava. Grazie – Faisal

18

È possibile utilizzare la funzione Environment.GetEnvironmentVariable:

string commonDir = Environment.GetEnvironmentVariable("CommonProgramFiles"); 

È quindi possibile utilizzare Path.Combine aggiungere il resto del percorso:

string fullPath = Path.Combine(commonDir, "System", "web32.dll"); 

Un'altra opzione è quella di utilizzare Environment.ExpandEnvironmentVariables. Questo sostituirà tutte le variabili d'ambiente con i loro valori:

string fullPath = Environment.ExpandEnvironmentVariables("%CommonProgramFiles%\System\web32.dll"); 
+0

Ovviamente, l'override di 'Path.Combine' funziona solo nella v4 del framework –

Problemi correlati