프로그램 파일 x86 env 변수를 가져오는 방법은 무엇입니까?
명령 프롬프트에서 프로그램 파일(x86)의 위치를 표시하는 방법을 알고 싶습니다.Windows 7 64비트를 사용하고 있습니다.
시도해 봤습니다.
echo %programfiles(x86)%
그리고.echo %programfiles%
.
이 두 출력 모두C:\Program Files
제가 수동으로 레지스트리를 확인했을 때,
HKLM/소프트웨어/마이크로소프트/윈도우즈/현재 버전,
그programfilesdir
을 가리키는 말.C:\Program Files
그리고.
HKLM/소프트웨어/WOW64/마이크로소프트/윈도우즈/현재 버전,
그programfilesdir
을 가리키는 말.C:\Program Files (x86)
.
하지만, 왜 나는 항상 보는 것입니다.C:\Program Files
표시됩니까?
64비트 모드로 실행 중인 64비트 시스템에서는 다음을 수행합니다.
echo %programfiles%
==>C:\Program Files
echo %programfiles(x86)%
==>C:\Program Files (x86)
32비트(WOW64) 모드로 실행되는 64비트 시스템의 경우:
echo %programfiles%
==>C:\Program Files (x86)
echo %programfiles(x86)%
==>C:\Program Files (x86)
32비트 모드로 실행 중인 32비트 시스템에서:
echo %programfiles%
==>C:\Program Files
echo %programfiles(x86)%
==>%programfiles(x86)%
또 다른 관련 환경 변수는 다음과 같습니다.
%ProgramW6432%
32비트(WOW64) 모드로 실행되는 64비트 시스템에서는 다음을 수행합니다.
- echo %program files% ==> C:\Program Files (x86)
- echo %program files (x86) % ==> C:\Program Files (x86)
- echo %Program W6432% ==> C:\Program Files
Wikipedia에서:
%ProgramFiles% 변수는 Windows 및 기타의 설치된 모든 프로그램을 저장하는 ProgramFiles 디렉토리를 가리킵니다.영어 시스템의 기본값은 "C:\프로그램 파일".64비트 버전의 Windows(XP, 2003, Vista)에서는 %ProgramFiles(x86)%도 있으며 기본값은 "C:\Program Files(x86)" 및 %ProgramW6432%. 기본값은 "C:\프로그램 파일".%ProgramFiles% 자체는 환경 변수를 요청하는 프로세스 자체가 32비트인지 64비트인지에 따라 달라집니다(Windows-on-Windows 64비트 리디렉션으로 인해 발생함).
참조: http://en.wikipedia.org/wiki/Environment_variable
윈도우즈 64비트 시스템에서 에코 %program files(x86)%는 C:\Program Files(x86)를 인쇄합니다.
64비트 윈도우즈 시스템에서 다양한 환경 변수와 일부 윈도우즈 레지스트리 키의 읽기는 읽기 프로세스가 32비트인지 64비트인지에 따라 다른 소스로 리디렉션됩니다.
아래 표에는 다음 데이터 원본이 나열되어 있습니다.
X = HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion
Y = HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion
Z = HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList
READING ENVIRONMENT VARIABLES: Source for 64-bit process Source for 32-bit process
-------------------------------|----------------------------------------|--------------------------------------------------------------
%ProgramFiles% : X\ProgramW6432Dir X\ProgramFilesDir (x86)
%ProgramFiles(x86)% : X\ProgramFilesDir (x86) X\ProgramFilesDir (x86)
%ProgramW6432% : X\ProgramW6432Dir X\ProgramW6432Dir
%CommonProgramFiles% : X\CommonW6432Dir X\CommonFilesDir (x86)
%CommonProgramFiles(x86)% : X\CommonFilesDir (x86) X\CommonFilesDir (x86)
%CommonProgramW6432% : X\CommonW6432Dir X\CommonW6432Dir
%ProgramData% : Z\ProgramData Z\ProgramData
READING REGISTRY VALUES: Source for 64-bit process Source for 32-bit process
-------------------------------|----------------------------------------|--------------------------------------------------------------
X\ProgramFilesDir : X\ProgramFilesDir Y\ProgramFilesDir
X\ProgramFilesDir (x86) : X\ProgramFilesDir (x86) Y\ProgramFilesDir (x86)
X\ProgramFilesPath : X\ProgramFilesPath = %ProgramFiles% Y\ProgramFilesPath = %ProgramFiles(x86)%
X\ProgramW6432Dir : X\ProgramW6432Dir Y\ProgramW6432Dir
X\CommonFilesDir : X\CommonFilesDir Y\CommonFilesDir
X\CommonFilesDir (x86) : X\CommonFilesDir (x86) Y\CommonFilesDir (x86)
X\CommonW6432Dir : X\CommonW6432Dir Y\CommonW6432Dir
예를 들어 32비트 프로세스의 경우 데이터 소스는%ProgramFiles%
그리고.%ProgramFiles(x86)%
환경 변수는 레지스트리 값입니다.HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir (x86)
.
그러나 64비트 프로세스의 경우 데이터 소스는%ProgramFiles%
환경 변수는 레지스트리 값입니다.HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramW6432Dir
의 데이터 및 ...에 데이터 소스그리고 데이터 소스는 다음과 같습니다.%ProgramFiles(x86)%
입니다.HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir (x86)
에서는 "윈도우즈 기본다의같음과은포다문니함합을자열대부분치"와 같은 합니다.C:\Program Files (x86)
값으로HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir (x86)
그러나 이것(및 기타)은 변경될 수 있습니다.
이러한 Windows 레지스트리 값에 입력된 내용은 Windows 탐색기에서 로그인 시 해당 환경 변수로 읽은 다음 하위 프로세스에 복사되어 나중에 생성됩니다.
값은 다음과 같습니다.HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesPath
에서 Windows 치대의 이부입을 력문때기 하만특다 합주니목히문할에분라는 을 입력하므로 특히 주의해야 합니다.%ProgramFiles%
64비트 프로세스에서 읽을 수 있습니다. 이 열 환 변 참 니 합 다 조를 참조합니다.%ProgramFiles%
값 그결과, 값트리데이에가에서 데이터를 .HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramW6432Dir
프로그램이 이하지 않는 한...일부 프로그램이 이 환경 변수의 값을 변경하지 않는 한.
64비트 및 32비트 프로세스의 환경 변수를 표시하는 작은 유틸리티를 작성했습니다.여기서 다운로드할 수 있습니다.
및 실행 은 VisualStudio 2017 ...\x64\Release
그리고...\x86\Release
각각 다음과 같다.
IMHO, 이 토론에서 빠진 한 가지 점은 사용하는 변수가 무엇이든 항상 적절한 폴더를 가리키도록 보장된다는 것입니다.C:\ 이외의 드라이브에 Windows가 설치되어 있는 드문 경우에는 이 문제가 중요합니다.
언급URL : https://stackoverflow.com/questions/9594066/how-to-get-program-files-x86-env-variable
'programing' 카테고리의 다른 글
"git branch"와 "git checkout -b"의 차이점은 무엇입니까? (0) | 2023.07.09 |
---|---|
피어 종속성을 선택적으로 설정하려면 어떻게 해야 합니까? (0) | 2023.07.09 |
각 2 typescript 주변 상황에서 구현을 선언할 수 없습니다. (0) | 2023.07.09 |
오라클 저장 프로시저 내에서 다른 사용자의 테이블 액세스 (0) | 2023.07.09 |
'헤드 분리' 커밋을 마스터로 되돌리는 방법 (0) | 2023.07.09 |