Estou a usar:
FileInfo(
System.Environment.GetFolderPath(
System.Environment.SpecialFolder.ProgramFiles)
+ @"\MyInstalledApp"
Para determinar se um programa é detectado na máquina de um usuário (não é o ideal, mas o programa que estou procurando é um kludge antigo correto de um aplicativo MS-DOS, e não consegui pensar em outro método).
No Windows XP e nas versões de 32 bits do Windows Vista, isso funciona bem. No entanto, no Windows Vista x64, o código retorna a pasta Arquivos de Programas x64, enquanto o aplicativo está instalado nos Arquivos de Programas x86. Existe uma maneira de retornar programaticamente o caminho para os Arquivos de Programas x86 sem cabeamento "C: \ Arquivos de Programas (x86)"?
Respostas:
A função abaixo retornará o
Program Files
diretório x86 em todas essas três configurações do Windows:fonte
Environment.Is64BitOperatingSystem
ouEnvironment.Is64BitProcess
?Se você estiver usando o .NET 4, há uma enumeração de pastas especial ProgramFilesX86 :
fonte
fonte
Observe, no entanto, que a
ProgramFiles(x86)
variável de ambiente estará disponível apenas se seu aplicativo estiver executando 64 bits.Se seu aplicativo estiver executando 32 bits, você pode simplesmente usar a
ProgramFiles
variável de ambiente cujo valor será realmente "Arquivos de Programa (x86)".fonte
Uma maneira seria procurar a variável de ambiente "ProgramFiles (x86)":
fonte
Estou escrevendo um aplicativo que pode ser executado nas plataformas x86 e x64 para Windows 7 e, consultando a variável abaixo, apenas puxa o caminho certo da pasta de arquivos de programas em qualquer plataforma.
fonte
Linha única usando o novo método no .NET. Sempre retornará a pasta x86 Program Files.
Environment.Is64BitOperatingSystem ? Environment.GetEnvironmentVariable("ProgramFiles(x86)") : Environment.GetEnvironmentVariable("ProgramFiles"))
fonte
Código C #:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
Resultado:
C: \ Arquivos de Programas (x86)
Nota:
Precisamos dizer ao compilador para não preferir uma plataforma de compilação específica.
Razão:
fonte