2010-04-25 10 views
19

Tengo una situación en la que necesito devolver una ruta de directorio leyendo la configuración del registro. valor de registro me devuelve una ruta en el formatoCómo expandir la variable de entorno% CommonProgramFiles% system in .NET

%CommonProgramFiles%\System\web32.dll 

mientras que el código del consumidor está esperando en el formato

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

¿Cómo puedo resolver tales ruta del directorio en el código .NET?

Respuesta

25

Environment.ExpandEnvironmentVariables. Si controla la creación del valor de registro, almacénelo como una cadena expansible en el registro y la API de registro lo expandirá automáticamente.

+0

Necesito una ruta completa del directorio y podría ser cualquier otra variable de entorno, no sólo CommonProgramFiles%% – Faisal

+2

No entiendo tu comentario, @Faisal. 'ExpandEnvironmentVariables' ampliará cualquier variable de entorno que vea en la cadena que proporcione, y generará una ruta completa en el caso específico que cite en la pregunta. –

+1

ok que funcionó. Gracias – Faisal

18

Puede utilizar la función Environment.GetEnvironmentVariable:

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

continuación, puede utilizar Path.Combine añadir el resto de la ruta:

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

Otra opción es utilizar Environment.ExpandEnvironmentVariables. Esto reemplazará todas las variables de entorno con sus valores:

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

Por supuesto, que la anulación de 'Path.Combine' solo funciona en v4 del framework –

Cuestiones relacionadas