c# .net windows windows-xp program-files

c# - ¿Cómo recupero mediante programación la ruta real a la carpeta "Archivos de programa"?



.net windows (6)

Posible duplicado:
C # - Cómo obtener archivos de programa (x86) en Windows Vista 64 bit

Me doy cuenta de que las probabilidades de que un usuario cambie el valor predeterminado de Windows de C:/Program Files son bastante escasas, ¡pero han ocurrido cosas más extrañas!

¿Cómo puedo obtener la ruta correcta a los Program Files de programa del sistema?



Puede acceder a la variable de entorno llamada:% PROGRAMFILES%

es decir:

%PROGRAMFILES%/Maxis/SimCity

Cía#:

System.Environment.SpecialFolder.ProgramFiles


Sólo para añadir a esto.

Si está ejecutando en modo de 32 bits (incluso en un sistema operativo de 64 bits), SpecialFolder.ProgramFiles y% PROGRAMFILES% devolverán .. Archivos de programa (x86).

Si necesita específicamente uno y / o el otro, deberá verificar lo siguiente:

Sistema de 32 bits:

SpecialFolder.ProgramFiles = ..Program Files /

Sistema de 64 bits en un proceso de 32 bits: SpecialFolder.ProgramFiles = ..Program Files (x86) / Environment.GetEnvironmentVariable("ProgramW6432") = ..Program Files /

Sistema de 64 bits en proceso de 64 bits: SpecialFolder.ProgramFiles = ..Program Files / Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") = ..Program Files (x86) /

Obviamente esto depende de tu localidad, etc ...



Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) es probablemente la mejor solución, pero otra variante posible es evaluar el valor de la variable de entorno ProgramFiles . Para esto, puedes usar el método GetEnvironmentVariable o ExpandEnvironmentVariables de la clase Environment :

Environment.GetEnvironmentVariable("ProgramFiles") Environment.ExpandEnvironmentVariables("%ProgramFiles%")


Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)

obtiene "archivos de programa (x86)" en Windows de 64 bits y "archivos de programa" en 32 bits.