Eli의 여백

바쁜 나날들 사이에서 생각났던 이런저런 것들을 적어봅니다.

IT/문제해결

사용자 계정명 띄어쓰기로 문제생길때 깔끔하게 해결하는 방법 (고급)

Eli♪ 2021. 4. 25. 12:48

문제상황

이전부터 내 윈도우 계정 이름에 띄어쓰기가 들어가버려서 command line으로 뭔가를 처리할 때 종종 문제가 발생했다. 가장 최근의 문제는 npm이었는데, npm install yarn을 하는 과정에서 자꾸 에러가 떴고, cnpm이라는 것을 쓰니 해결이 되는 것으로 찾았다. CNPM이 뭔가 했더니 중국 계정명인 사람을 위해서 만들어진 것 같았다. 아마도 유니코드 차이로 생각한다. 어쨌거나 그 이후에도 yarn도 띄어쓰기를 인식을 못해서 에러를 계속 뿜으니 너무 화가 났다. 망할 ASCII사용자들... 왜 이런것도 고려를 안하고 짜는거야?

 

계정 이름을 변경하는 것 자체는 간단하지만, 대충 짠 프로그램들이 경로명을 %home%이나 %appdata%가 아니라 절대경로로 해서 어딘가에 하드코딩으로 박아버린 경우에 계정명을 변경하면 프로그램 실행이 안된다던지 라이센스가 풀린다던지 기타 등등의 엄청난 문제를 수반할 수 있다. 그래서 나도 위험성 때문에 지금까지 이름을 못바꾸고 있었다가, 도저히 안되겠다 싶어서 다음의 글을 참고해서 변경해 보았다.

 

www.groovypost.com/howto/change-account-name-windows-10/

 

다만 저 글도 완벽하지가 않아서 내가 추가한 방법과 함께 어떻게 해결했는지에 대해서 적어 보겠다. 핵심은 junction link이다.

 

최종결과물

기존에 있던 띄어쓰기 있는 이름을 띄어쓰기 없게 바꾸고 띄어쓰기 있는 이름을 junction link로 만들어서 해결했다. dropbox에서 문제를 일으켜서 잘 모른상태로 환경변수까지 바꿨었는데 junction link만 제때 잘 만들어주면 환경변수 안바꿔도 될듯.

 

해결법 요약 설명

주의!!!!: 순서가 잘못되거나 과정이 잘못되어 에러가 나면 모든 것이 꼬일 수 있으니 각오하고 할 것

0. 모든 프로그램 최대한 종료

1. 복원 지점 만들기 (백업)

2. 빌트인 administrator 계정 활성화

3. netplwiz로 계정명 띄어쓰기 제거

4. 빌트인 administrator 계정으로 전환

5. 작업관리자에서 기존 로그인 계정 로그아웃

6. wmic useraccount list full 에서 계정명 SID 확인

7. 관리자 cmd 켜고 띄어쓰기 있던 폴더명 변경

8. junction link로 띄어쓰기 있는 계정명 폴더 호환성 확보

9. regedit에서 profile list 찾고 유저폴더명 띄어쓰기 수정 안된거 수정

10. 재부팅 후 바뀐 계정명으로 로그인

11. 빌트인 admin 계정 비활성화

12. 재부팅 후 쓸모없어진 빌트인 admin 폴더 삭제

 

0. 모든 프로그램 최대한 종료

혹시나 문제가 발생할 수 있으니 모든 프로그램을 최대한 종료한다.

특히 열린 폴더는 꼭 닫자. 이걸 안하면 explorer.exe 때문에 중간에 엄청난 깜빡거림을 겪을지도

 

1. 복원 지점 만들기

시작 버튼을 누르고 복원 지점 이라고 입력하면 나오는거 누른다.

 

구성을 누른다.

 

시스템 보호 사용에 체크되어있는지 보고 아래의 디스크 공간 최대사용이 현재 사용보다 크게 넉넉하게 잡는다. 본인의 경우 원래 1%, 10GB였는데 5% 46.5GB로 늘려서 혹시나 백업 안될 가능성을 차단했다.

 

확인 누르고 나와서 이번에는 만들기를 클릭한다. 적당히 알아볼 수 있는 이름을 적는다.

 

2. 빌트인 admin 계정 활성화

시작버튼 우클릭 후 컴퓨터 관리 선택

 

로컬 사용자 및 그룹-사용자에서 administrator라고 된 것에 속성 눌러서 계정 사용 안함 체크 풀기

체크 풀면 아래 화살표 모양이 사라진다.

 

3. Netplwiz로 계정명 띄어쓰기 제거

윈도우키 + R 을 누르고 netplwiz 입력

문제있는 사용자명에 들어가서 띄어쓰기 제거 및 확인 누르기. 재부팅하라고 하는데 재부팅했다가 무슨일이 생길지 몰라서 안했다.

 

4. 빌트인 administrator 계정으로 전환

아까 빌트인 어드민 계정을 활성화 시켜놨기 때문에 시작 버튼 눌러서 왼쪽의 사람 모양을 누르면 못보던 administrator라는 것이 보일 것이다. 그걸 누른다. 그러면 로그아웃하지 않고 바로 어드민 계정으로 로그인된다.

초기에 약간 설정작업같은게 나오는데 대충 개인정보 가져가고싶다는 내용이니 다 아니오로 하고 수락한다. 이 이후의 절차는 admin 계정에서 시행한다.

 

5. 작업관리자에서 기존 로그인 계정 로그아웃

시작버튼 또는 작업표시줄을 우클릭해서 작업관리자를 들어간 다음 창 아래에 확장할 수 있는 화살표를 확장을 시키고, 사용자 탭에 가보면 admin 계정과 띄어쓰기 없앤 계정을 볼 수 있고, 띄어쓰기 없앤 계정에 연결 끊김이라고 되어 있다.

 

이것의 의미는 로그인은 되어있지만 현재 어드민 계정을 보고 있기 때문에 연결만 끊겨있는 상태이다. 추후에 폴더명을 변경할 때 문제가 되지 않기 위해 여기서 띄어쓰기 없앤 연결끊김이라고 된 계정을 우클릭해서 로그아웃을 누른다.

 

6. wmic useraccount list full 에서 계정명 SID 확인

시작버튼을 우클릭해서 Windows Powershell(관리자) 라고 된 것을 누른다.

 

cmd를 입력한다. 이걸 해줘야 이후 명령어들이 제대로 동작한다.

다음 명령어를 입력한다.

wmic useraccount list full

그러면 리스트가 쭉 뜰텐데 Name을 보고 바뀐 계정명의 SID를 잘 기억한다. 나는 끝자리인 1001만 기억했다. 나중에 regedit에서 써먹는다.

 

7. 관리자 cmd 켜고 띄어쓰기 있던 폴더명 변경

위에서 이미 관리자 cmd를 켜놨기 때문에 그대로 해도 되고, powershell 관리자권한으로 열고 cmd를 하든지 해서 하여간 관리자 터미널이 열린 상태에서 다음과 같은 형식으로 입력한다.

cd C:\Users
rename "바뀌기전이름" "바뀌고난이름"

여기에서 권한에러가 난다면 관리자권한으로 되어있는지 확인하고, 명령어가 없다고 하면 cmd상태인지 확인한다. powershell에서는 rename 명령어가 없다.

 

8. junction link로 띄어쓰기 있는 계정명 폴더 호환성 확보

위 상태에서 정상적으로 폴더명 변경이 되었다면 그 폴더에서 그대로 띄어쓰기 있는 이름을 junction link로 다시 만들어준다. junction link에 대한 것은 이전 글에서도 언급했지만 특별한 바로가기같은 것이다. 어쨌거나 다음과 같은 형식으로 입력한다.

mklink /j "Master of this" "Masterofthis"

/j는 junction을 만든단 얘기고 아까랑 순서가 반대다. 이렇게 하면 Master of this 라는 폴더를 만들고 해당 폴더로 접속시 Masterofthis로 연결해준다.

 

9. regedit에서 profile list 찾고 유저폴더명 띄어쓰기 수정 안된거 수정

윈도우키 + R을 누르고 regedit을 입력한다.

 

이제 다음의 경로에서 ProfileImagePath 변수의 띄어쓰기를 없애준다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\아까기억한SID

 

여기까지 하면 기본적으로 관련절차는 다 끝났다. 남은 작업은 세팅해뒀던 것들을 되돌리는 작업이다.

 

10. 재부팅 후 바뀐 계정명으로 로그인

컴퓨터를 재부팅한 후 바뀐 계정명으로 로그인한다. 

 

11. 빌트인 admin 계정 비활성화

빌트인 어드민 계정을 컴퓨터 관리에 들어가서 아까 2번의 역과정으로 비활성화해준다.

 

12. 재부팅 후 쓸모없어진 빌트인 admin 폴더 삭제

위 과정이 끝나고도 User 폴더에 Administrator라는 폴더가 남아 있는데, 이제 지워줘도 된다. 여기까지 하면 다음과 같은 결과물을 얻는다.

이제 정상적으로 윈도우를 사용하면 된다. 띄어쓰기 있는 폴더를 junction link로 만들어뒀기 때문에 하드코딩으로 경로를 지정해놔서 띄어쓰기쪽으로 접근하는 프로그램들에 대해서도 호환이 된다.

 

결론

그동안 윈도우 계정명에 띄어쓰기가 있어서 보안성은 높았으나 자꾸 CLI환경에서 문제가 터져나왔는데 이참에 뿌리를 제대로 뽑은 것 같다. 하늘이 무너져도 솟아날 구멍이 있다더니 어찌저찌 해결이 되었고 앞으로 개발환경에 있어서 답답함이 줄어들 것 같다. 끝.