예를 들어, 다음 키를 고려하십시오.
HKEY_CLASSES_ROOT\txtfile\shell\open\command
그리고 그것의 (Default)
값
%SystemRoot%\system32\NOTEPAD.EXE %1
이 값은 두 번 클릭 할 때 어떤 일이 발생할지 결정합니다. .txt
파일. %SystemRoot%
과 %1
해석 가능한 변수 cmd.exe
. PowerShell의 동일한 명령은 다음과 같습니다.
$env:SystemRoot\system32\NOTEPAD.EXE $args[0]
그러나 Powershell에 해당하는 레지스트리 값을 설정하면 오류가 발생하게됩니다. cmd.exe
PowerShell이 아니라 해석하려고합니다. PowerShell이 대신 인터프리터가되도록 Windows를 설정할 수 있습니까? cmd.exe
?
답변
Windows에서 PowerShell 스타일 변수를 레지스트리에 사용하도록 설정할 수 없습니다. 이렇게하면 많은 응용 프로그램에서 획기적인 변화가 될 것입니다. cmd.exe
환경 변수를 확장 할 수있는 것은 아닙니다.
예를 들어, 다음을 사용하여 .NET을 사용하여 환경 변수를 확장 할 수 있습니다.
[Environment]::ExpandEnvironmentVariables('%SystemRoot%\system32\NOTEPAD.EXE %1')
다음과 같이 입력 할 수도 있습니다. %HOME%
실행 대화 상자에서 승리 + R ) 또는 Windows 탐색기 주소 표시 줄에 홈 디렉토리를 엽니 다. 이 둘 중 어느 것도 사용하지 않는다. cmd.exe
변수를 확장합니다.
타사 응용 프로그램은 문자열 자체를 구문 분석하고 레지스트리에서 값을 조회 할 수도 있습니다. 이전 버전과의 호환성에 대한 Microsoft의 우려로 인해 Windows에서 환경 변수가 레지스트리에 저장되는 방식이 바뀔지는 모르겠습니다.