PowerShell을 사용하여 레지스트리 값 해석 예를 들어, 다음

예를 들어, 다음 키를 고려하십시오.

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에서 환경 변수가 레지스트리에 저장되는 방식이 바뀔지는 모르겠습니다.