명령 줄에서 레지스트리에 멀티 린 레트 _sz 문자열을 어떻게 추가합니까?

StackOverflow https://stackoverflow.com/questions/153879

  •  03-07-2019
  •  | 
  •  

문제

Windows 시스템의 빌드 설정의 일환으로 레지스트리 항목을 추가해야하며 간단한 배치 파일에서 수행하고 싶습니다.

항목은 타사 앱 용이므로 형식이 고정되어 있습니다.

항목은 reg_sz 문자열의 형태를 취하지 만 새로운 라인을 포함해야합니다. 분리기로서 0xoa 문자.

나는 몇 가지 문제를 쳤다.

첫 번째 시도는 Regedit을 사용하여 생성 된 .reg 파일을로드했습니다. 긴 끈이나 끈을 끈으로 좋아하지 않기 때문에 이것은 실패했습니다. 나는 수출이 잘 작동하지 않는다는 것을 발견했다. 타사 앱이 Win32 API를 통해 직접 비슷한 항목을 추가하므로 수출을 테스트 할 수있었습니다.

두 번째 시도는 Reg Add 명령을 사용했지만 어쨌든 내가 시도하는 모든 것이 문자 문자열이 추가되는 것으로 끝나는 Newline 문자를 추가 할 수 없습니다.

도움이 되었습니까?

해결책

이 레지스트리 변경 이외의 배치에서 다른 일을하고 있다고 가정 할 때 vbscript (.vbs) 파일을 만들고 배치 파일에서 호출 할 수 있습니다. vbscript에서는 다음과 같은 것을보고 있습니다.

set WSHShell = CreateObject("WScript.Shell")  
WSHShell.RegWrite "HKEY_LOCAL_MACHINE\SOMEKEY", "value", "type"

Google을 사용하여 가능한 유형 값을 찾을 수 있어야합니다.

다른 팁

스크립팅 언어로 제한되지 않으면 C#에서 수행 할 수 있습니다.

Registry.CurrentUser.OpenSubKey(@"software\classes\something", true).SetValue("some key", "sometext\nothertext", RegistryValueKind.String);

텍스트를 UTF-16LE 16 진수 인코딩 된 데이터로 번역하는 것을 마음에 들지 않는 한, 캐리지 리턴 (CR) 및 LINFEED (LF) END-OF-LINE (LINFEED (LF) END-OF-LINE (LINFEED (LF) END-OF-LINE (EOL)을 포함하는 멀티 라인 reg_SZ 문자열을 가져올 수 있습니다. . 이 텍스트로 reg_sz를 가져 오려면 다음과 같습니다.

1st Line
2nd Line

다음에 포함 된 Multilinetext.reg라는 파일을 만들 수 있습니다.

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Environment]
"MULTILINETEXT"=hex(1):31,00,73,00,74,00,20,00,4c,00,69,00,6e,00,65,00,0d,00,0a,00,\
32,00,6e,00,64,00,20,00,4c,00,69,00,6e,00,65,00,0d,00,0a,00,\
00,00

ASCII를 UTF-16LE로 인코딩하려면 각 ASCII 코드 값을 따르는 널 바이트를 추가하십시오. reg_sz 값은 널 문자로 종료해야합니다 (,00,00) UTF-16LE 표기법.

배치 파일에서 레지스트리 변경을 가져옵니다 REG.EXE IMPORT MULTILINETEXT.REG.

이 예제는 환경 키를 사용합니다. 편리하기 때문에 이러한 데이터를 환경 변수에 추가하는 것이 특히 유용하지 않기 때문입니다. regedit을 사용하여 가져온 reg_sz 데이터에 CRLF 문자가 포함되어 있는지 확인할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top