나는 사용하고있다 :
FileInfo(
System.Environment.GetFolderPath(
System.Environment.SpecialFolder.ProgramFiles)
+ @"\MyInstalledApp"
프로그램이 사용자 컴퓨터에서 감지되는지 확인하기 위해 (이상적이지는 않지만 내가 찾고있는 프로그램은 MS-DOS 응용 프로그램의 오래된 구식이며 다른 방법을 생각할 수 없었습니다).
Windows XP 및 32 비트 버전의 Windows Vista에서는 올바르게 작동합니다. 그러나 x64 Windows Vista에서는 코드가 x64 Program Files 폴더를 반환하는 반면 응용 프로그램은 Program Files x86에 설치됩니다. “C : \ Program Files (x86)”하드 배선없이 프로그래밍 방식으로 Program Files x86의 경로를 반환 할 수있는 방법이 있습니까?
답변
아래 함수 Program Files
는이 세 가지 Windows 구성 모두 에서 x86 디렉토리를 반환합니다 .
- 32 비트 Windows
- 64 비트 Windows에서 실행되는 32 비트 프로그램
- 64 비트 창에서 실행되는 64 비트 프로그램
static string ProgramFilesx86()
{
if( 8 == IntPtr.Size
|| (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432"))))
{
return Environment.GetEnvironmentVariable("ProgramFiles(x86)");
}
return Environment.GetEnvironmentVariable("ProgramFiles");
}
답변
.NET 4를 사용하는 경우 특별한 폴더 열거 형 ProgramFilesX86이 있습니다 .
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
답변
Environment.GetEnvironmentVariable("PROGRAMFILES(X86)") ?? Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)
답변
그러나 ProgramFiles(x86)
환경 변수는 응용 프로그램이 64 비트를 실행중인 경우에만 사용할 수 있습니다.
응용 프로그램이 32 비트를 실행중인 경우 ProgramFiles
실제로 “Program Files (x86)”값을 갖는 환경 변수를 사용할 수 있습니다 .
답변
한 가지 방법은 “ProgramFiles (x86)”환경 변수를 찾는 것입니다.
String x86folder = Environment.GetEnvironmentVariable("ProgramFiles(x86)");
답변
Windows 7 용 x86 및 x64 플랫폼 모두에서 실행할 수있는 응용 프로그램을 작성 중이며 아래 변수를 쿼리하면 모든 플랫폼에서 올바른 프로그램 파일 폴더 경로를 가져옵니다.
Environment.GetEnvironmentVariable("PROGRAMFILES")
답변
.NET의 새로운 방법을 사용하는 원 라이너. 항상 x86 프로그램 파일 폴더를 반환합니다.
Environment.Is64BitOperatingSystem ? Environment.GetEnvironmentVariable("ProgramFiles(x86)") : Environment.GetEnvironmentVariable("ProgramFiles"))