윈 도 우 배치파일 고수분께 질문드립니다
2013.03.03 10:33
프로그램들이 종종 사용자 전용주소(?) 레지스트리 주소값
예) HKEY_USERS\S-1-5-21-85094885-3260311118-3619286497-500\Software\Test
에 프로그램 셋팅을 저장하는 경우가 있는데요, 이 경우 레지스트리 내보내기를 통해 다른 PC에서 등록하려고 하면
사용자 전용주소값(?)이 달라서 등록이 안됩니다.
그래서 배치파일로 현재 사용자PC의 전용주소로 변경 후 등록 → 프로그램 실행 방식으로 코드를 짜고 싶은데 다른것들은
문제가 안됩니다. 어떻게든 혼자서 하겠는데...
예를들어 Test.reg라는 파일에 위에 쓴 예시가 적혀있다면 검은색 색칠한 부분을 어떻게 배치파일에서 바꿔주느냐..
그게 문제입니다.
사용자 전용주소값을 예를들어 %Reg% 변수로 지정해놓고 Test.reg를 편집기로 연 후
HKEY_USERS\%Reg%\Software\Test
로 수정해서 저장 후 테스트를 해보니 배치파일에서 못읽고 오류를 내더군요.
물론 배치파일내에서 reg add 방식으로 값을 추가하는 방법도 있는데 값이 70~90개정도 되면 일일히 입력하는것도
골치고 그냥 간편하게 .reg파일을 만들어서 import 시키는 방식으로 가고 싶은데 복잡하네요 ㅠ.ㅠ
배치파일내에서 .reg 파일을 수정하는 방법은 없는걸까요?
댓글 [2]
-
네트워크 2013.03.03 15:01 -
suk 2013.03.03 17:18
2가지 방법만 알려드립니다. 알아서 조립하시리라 믿습니다 ;;
1. sid값 알아내기
reg add HKEY_CURRENT_USER\표시 /f
for /f "tokens=2 usebackq delims=\" %%a in (`"reg query HKEY_USERS /s /k /f 표시"`) do set sid=%%a
reg delete HKEY_CURRENT_USER\표시 /f
사용자값을 알아내기 위하여 현재 사용자에 표시값을 넣습니다
그러면 HKEY_USERS에도 자동으로 추가됩니다. 그걸로 sid값을 알게 되는거죠
\ 단위로 2번째가 sid값 위치입니다
2. bat파일에서 reg파일 만들어서 가져오기(적용하기)
>all.reg echo Windows Registry Editor Version 5.00
>>all.reg echo ; 관리자 cmd
>>all.reg echo [HKEY_CLASSES_ROOT\Directory\background\shell\runas]
>>all.reg echo "icon"="cmd.exe"
>>all.reg echo @="관리자 프롬프트">>all.reg echo [HKEY_CLASSES_ROOT\Directory\background\shell\runas\command]
>>all.reg echo @="cmd.exe /s /k pushd \"%V\""reg import all.reg
del all.reg
이건 적용할 reg파일 복사하셔서
일괄적으로 앞줄에 >>all.reg echo 추가하면 편합니다. (메모 편집 도구 중에는 있더군요)
그리고 확장자만 bat으로 변경하죠.
사용자 전용주소는 자동으로 어떻게 찾는지요?