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?
.NET proporciona una enumeración de '' carpetas especiales '' para Archivos de programa, Mis documentos, etc.
El código para convertir de la enumeración a la ruta real se ve así:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
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 ...
http://msdn.microsoft.com/en-us/library/14tx8hby.aspx en la clase Environment .
try {
Environment.GetFolderPath( Environment.SpecialFolder.ProgramFiles )
catch( ArgumentException ex ) {
Console.Out.WriteLine( ex.StackTrace );
}
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.