일단 내가 이짓거리를 하기 위해서 상당한 기간 머리를 쥐어 짰다는 것을 밝힌다.
내가 환경변수를 BAT 파일로 자동추가할 수 있는 방법을 찾기위해 참.... 뻘짓을 많이 했다
setx로 설정하는 방법이 있지만 중요한건 이렇게 접근했을때의 문제는 1024 문자수 제한이 있다는 크리티컬한 문제점이 있다
(잘못 설정하면 이전에 설정되어있던 PATH가 1024문자 이상일 경우 짤려서 사라진다 -.-허걱!
다행이 path를 따로 백업하지 않은이상 PATH의 일부분이 날라가 복구불가능할 수 있는 치명적인 문제점을 안고 있다)
또한 일반적인 환경변수 PATH를 그냥 가져다 대입해버리면 USER 부분과 MACHINE 부분의 PATH를 몽땅 합친 PATH를
가져오기 때문에 USER PATH와 MACHINE PATH를 분별해서 관리 할 수 있는 방법이 필요하다.
그래서 우리가 CMD환경에서 PATH를 완전하게 관리하기 위해서는
PowerShell이 필요하다
1. cmd를 실행하고 powershell 명령을 실행한다
2. $uPath = [Environment]::GetEnvironmentVariable("PATH", "USER") // 이 명령어는 파워쉘에서 USER부분의 PATH만 가져와 uPath 변수에 대입한다.
3. [Environment]::SetEnvironmentVariable("PATH", $uPath + "추가할 패스경로", "USER")
명령어가 좀 복잡하긴 하다 그래서 이보다 더 단순한 명령어로 USER PATH를 가져오고 패스를 추가할 수 있는 방법을 알고 있는분이 있다면 댓글을 부탁한다.
자 이 내용만 있으면 이걸 BAT파일로 작성해서 자동화시키는건 누워서 떡먹기다
Ps. 윈8.1을 사용하는 사람들은 UAC를 완전하게 해제해야 CMD에서 환경변수 변경이 가능하다
관리자 권한으로 CMD나 PowerShell을 사용할 수도 있겠지만 이 경우에는
자신의 계정의 환경변수를 접근하지 않는다 이런 문제점이 있는 관계로
UAC를 완전해제 해버려야 하는데 그러기 위해서는 Registry로 UAC해제를
해야한다 구글에서 쉽게 방법을 찾을 수 있으니 참고 바란다.
참고로 echo $uPath와 echo $Env:Path 명령어로 재차 확인해보기 바란다 무엇이 다른지
reg.exe 유틸리티로 직접 레지스트리에 값을 써도 될텐데?
왜냐하면 환경변수는 레지스트리 상에 저장되거든.
ㅇㅇ 그렇게 해도 되겠지만 reg 파일을 따로 만들어줘서 bat파일에서 실행해줘야 되자나 안그런가? 확인버튼도 눌러줘야되고 그리고 reg쪽도 path가 user와 system이 나눠져 있는지 모르겠네
reg를 접근하려면 그냥 sysdm.cpl로 마우스 똑딱똑딱하는거와 다를바 없지 안아?
뭔 소리야. reg 명령어 한번도 안 써봤냐? regedit 말고. 물론 reg 파일 만들어서 regedit으로 추가하는 방법도 있고 거기서도 메시지 상자 숨기는 옵션 주면 된다.
그리고 파워쉘 쓰느니 vbs 쓰고 만다.
portable로 exe파일경로를 bat파일 실행 한번으로 path경로에 자동등록하게 만드려는거야 이런작업을 reg로 한다 그래도 어차피 user쪽 path를 가져올 수 있어야 그 뒤짝에다 현재경로를 추가해줄 수 있자나 이걸 reg로 하려면 수동으로 열어가지고 path 복사해서 추가해주고 이래야 할텐데... 아니면 reg에 있는 user path값을 bat스크립트 작성으로 가져와가지고 저렇게 작성해서 reg값을 다시 변경해주는 방법이 가능하면 모를테지만 어쨌든~ ㅋ reg로도 자동화 할 수 있는 방법이 있다면 소개좀 해줘
그러니까 내PC만 생각하면 고정된 값이니까 상관없지만 다른 PC의 환경변수를 생각하면 얘기가 다르자넵
아 진짜 머리 안 돌아가나 보네 ㅡ.ㅡ; reg add 명령으로 레디스트리 값 바꾸면 되자너. 기존 값은 배치 파일 상에서 %PATH% 로 접근되니깐.
찾아보니 레지스트리로 직접 값을 조작하면 WM_SETTINGCHANGE 메시지가 발동하지 않는다고 하니깐 끝에 setx 로 쓰레기 환경 변수 값 하나 만들면 깔끔하겠네.
reg 명령어 그렇게 안써봐서 잘 몰라 그러니까 자세하게 작성해가지고 게시글로 좀 올려봐