programing

C# - Windows 64비트에서 프로그램 파일(x86)을 가져오는 방법

subpage 2023. 5. 29. 10:52
반응형

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

반응형