C# - Windows 64비트에서 프로그램 파일(x86)을 가져오는 방법
사용 중:
FileInfo(
System.Environment.GetFolderPath(
System.Environment.SpecialFolder.ProgramFiles)
+ @"\MyInstalledApp"
사용자 컴퓨터에서 프로그램이 탐지되는지 여부를 확인하기 위해(이상적인 것은 아니지만, 제가 찾고 있는 프로그램은 MS-DOS 응용 프로그램의 적절한 오래된 둔기이며 다른 방법을 생각할 수 없었습니다.)
Windows XP(윈도우 XP) 및 32비트 버전의 Windows Vista(윈도우 비스타)에서는 이 기능이 제대로 작동합니다.그러나 x64 Windows Vista에서는 코드가 x64 Program Files 폴더를 반환하지만 응용 프로그램은 Program Files x86에 설치됩니다.하드 배선 "C:" 없이 Program Files x86의 경로를 프로그래밍 방식으로 반환하는 방법이 있습니까?\프로그램 파일(x86)?"
아래 기능은 x86을 반환합니다.Program Files다음 세 가지 Windows 구성의 디렉토리입니다.
- 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실제 값이 "프로그램 파일(x86)"이 되는 환경 변수입니다.
한 가지 방법은 "Program Files(x86)" 환경 변수를 찾는 것입니다.
String x86folder = Environment.GetEnvironmentVariable("ProgramFiles(x86)");
Windows 7용 x86 및 x64 플랫폼에서 모두 실행할 수 있는 애플리케이션을 작성하고 있으며 아래 변수를 쿼리하면 모든 플랫폼에서 올바른 프로그램 파일 폴더 경로를 풀 수 있습니다.
Environment.GetEnvironmentVariable("PROGRAMFILES")
.NET의 새로운 방법을 사용하는 원라이너.항상 x86 Program Files 폴더를 반환합니다.
Environment.Is64BitOperatingSystem ? Environment.GetEnvironmentVariable("ProgramFiles(x86)") : Environment.GetEnvironmentVariable("ProgramFiles"))
C# 코드:
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)
출력:
C:\프로그램 파일(x86)
참고:
컴파일러에게 특정 빌드 플랫폼을 선호하지 않도록 해야 합니다.
Go to Visual Studio > Project Properties > Build > Uncheck "Prefer 32 bit"
이유:
기본적으로 대부분의 .NET 프로젝트는 "모든 CPU 32비트 기본 설정"입니다.
32비트 어셈블리의 선택을 취소하면 다음이 수행됩니다.
32비트 프로세스의 32비트 코드에 대한 JIT
64비트 프로세스의 32비트 코드에 대한 JIT
언급URL : https://stackoverflow.com/questions/194157/c-sharp-how-to-get-program-files-x86-on-windows-64-bit
'programing' 카테고리의 다른 글
| MongoDB 노드는 결과를 처리하지 않는 방법을 찾으십니까? (0) | 2023.05.29 |
|---|---|
| VB의 새 줄 문자입니다.그물? (0) | 2023.05.29 |
| 대상 컴퓨터가 이를 적극적으로 거부하여 연결할 수 없습니다. (0) | 2023.05.29 |
| UI 이미지를 NSData로 변환하고 Swift에서 UI 이미지로 다시 변환하시겠습니까? (0) | 2023.05.29 |
| 정말 이상한 이클립스 키보드 동작/버그? (0) | 2023.05.24 |