큰 따옴표로 레지스트리 키를 만들면 어떤 차이가 있습니까?


4

방금 "쉘", "파워 쉘"및 "명령"키를 Windows 레지스트리의 적절한 위치에 추가하여 "Open PowerShell Here"컨텍스트 메뉴 항목을 만들었습니다. "command"의 기본값은 전체 경로를 큰 따옴표로 묶지 않고 이스케이프 문자로 백 슬래시를 사용하여 내 powershell.exe의 경로입니다.

이로 인해 powershell이 ​​실행 된 상태에서 cmd 창이 열렸습니다. 즉, 창은 작고 검은 색이었고 기본 명령 프롬프트 스타일로 서식이 지정되었습니다.
경로를 이스케이프 문자로 사용하지 않고 대신 큰 따옴표로 묶어 다른 경로를 변경하지 않고, 그 어느 때보 다 일반적이고 더 큰 파란색 PowerShell 창이 열렸습니다.

이중 따옴표가 레지스트리에 가져 오는 변경 사항이 궁금합니다. 이 경우 실행 방법을 어떻게 변경하고 그 이유는 무엇입니까?

해당 키는 다음과 같습니다.
C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe

"C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe"

첫 번째 키는 PowerShell이 ​​시작된 표준 검정 명령 프롬프트 창을 열고 두 번째 키는 친숙한 파란색 "PowerShell"창을 엽니 다.

특정 폴더에서 Powershell을 시작하는 열쇠는 끝에 논증이 있습니다. 여기서는 의도적으로 생략한데, 이것들은 제가 테스트 한 결과이고 다른 결과를줍니다.


1
부디 편집하다 귀하의 질문에 두 가지 명령 키를 모두 포함하십시오.
DavidPostill

답변:


2

첫 번째 시나리오에서는 아무 것도 벗어날 수 없습니다. 새로운 프로세스는 다음과 같은 완전한 명령 행으로 생성됩니다. C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe, 당신이 쓴 것과 똑같습니다. (Process Explorer로 검증 됨)

Windows는 콘솔 스타일 정보 (색상, 글꼴, 창 크기)를 HKCU\Console. 콘솔 모드 프로그램 (즉, 자체 프로그램을 생성하는 프로그램 conhost.exe 인스턴스)가 실행되면 Windows는 Console 경로에 환경 변수가있는 프로그램의 EXE 전체 경로를 지정했습니다. 쓰러진 (주 참조)와 \ 대체 된 _. (실패 할 경우 Windows는 해당 하위 키를 확인하지 않고 \ 대체,하지만 레지스트리 편집기는 포함시키지 않습니다 \ 키 이름으로. 프로세스 모니터로 확인 됨.)

노트 : "붕괴"(환경 변수와 관련하여)는 "팽창"의 반대말에 불과합니다. 확장은 다음과 같은 환경 변수를 대체하는 프로세스입니다. %SystemRoot% 값 (예 : C:\Windows 이 경우). 가능한 경우 콘솔 키를 참조하기 전에 Windows에서 값을 환경 변수로 축소합니다. C:\Windows 대체되다. %SystemRoot%.

일반적으로 Windows에서는 PowerShell의 하위 키 설정이 호출됩니다. %SystemRoot%_System32_WindowsPowerShell_v1.0_powershell.exe. 그러나 프로그램의 경로에 여분의 백 슬래시가 있기 때문에 (적어도이 경우에는 Windows가 용서하지만 정리하지는 않음) 적절한 하위 키가 없으므로 특별한 콘솔 설정을 찾지 못합니다. 컨텍스트 메뉴 항목을 시작할 때 설정하면 C:\Windows\system32\WindowsPowerShell\v1.0\\powershell.exe (마지막 \ 두 배로 늘림) 실제 하위 키의 이름을 %SystemRoot%_System32_WindowsPowerShell_v1.0__powershell.exe (마지막 _ 출시 된 PowerShell 인스턴스는 스타일링을 얻었습니다.

곁에: 입력으로 시작되는 PowerShell 인스턴스 powershell 기존의 명령 프롬프트에서는 특별한 스타일을 얻지 못합니다. 부모 스타일의 콘솔에 붙어 있기 때문입니다. 일반적으로 지루한 기본 스타일이 있습니다. 그 현상은 위와는 관련이 없습니다.

추가 읽기 : 제이 바즈 지의 좋은 대답 스타일링이 가능한 여러 곳을 언급합니다.


너는 성자 야! 이 문제를 파악하는 데 도움을 주시겠습니까? 명령의 마지막에 내가 갖고 싶은 인수가 있기 때문에 열리는 창의 스타일을 변경하려면 해당 HKCU \ Console 키를 어떻게 변경해야합니까? 또한 "붕괴 된"변수의 의미는 무엇입니까?
mathgenius

@mathgenius 콘솔을 수정해야한다고 생각하지 않습니다. PowerShell 경로를 따옴표로 묶고 따옴표 바깥에 인수를두면 EXE 자체가 정상 경로로 시작되므로 스타일을 가져옵니다. "무너졌다"는 말은 시스템 환경 변수의 값이 환경 변수 자체로 바뀌 었음을 의미합니다. C:\Windows ~로 대체됩니다. %SystemRoot%.
Ben N

이미 말했듯이 Jay Bazuzi의 대답처럼이 정보는 훌륭하지만 첫 번째 예제에서 "\"가 이스케이프되지 않는 이유는 무엇인지 알 수 없습니까? 아니면 언제 탈출 할 것인가가 중요합니다.
mathgenius

@mathgenius 레지스트리 값이 이스케이프되지 않기 때문에 이스케이프 처리되지 않으며 익스플로러는 여기서 이스케이프 처리하지 않는 것 같습니다. (엄지 손가락의 규칙 : 누군가는 추가 처리를 거치지 않는 한 문자 그대로입니다.) 이스케이프는이 경우에는 필요하지 않습니다. 어떤 부분이 프로그램 경로이고 어떤 부분이 인수인지를 나타 내기 위해 프로그램 경로를 따옴표로 묶습니다.
Ben N
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.