DropBox - PermissionError: [WinError 5] Access is denied: 'C:\\Users\\...'
사용자 Profile 경로를 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\[USER_SID]" 레지스트리 설정을 이용해 변경한 후, 다른 앱들은 어찌저찌 적응을 하도록 만들었는데, 유독 DropBox만 실행 시 이런 오류가 발생합니다.
bn.BUILD_KEY: Dropbox
bn.VERSION: 192.4.4605
bn.constants.WINDOWS_SHELL_EXT_VERSION: 69
bn.is_frozen: True
machine_id: b1e9b1ca-015b-b1a4-9e62-c259015bfb22
pid: 26104
cwd: 'C:\\Program Files (x86)\\Dropbox\\Client'
real_path='C:\\Program Files (x86)\\Dropbox\\Client'
mode=0o40777 uid=0 gid=0
parent mode=0o40777 uid=0 gid=0
HOME: None
appdata: 'C:\\Users\\Test User\\AppData\\Local\\Dropbox\\instance1'
real_path='C:\\Users\\Test User\\AppData\\Local\\Dropbox\\instance1'
not found
parent not found
dropbox_path: None
not found
parent not found
sys_executable: 'C:\\Program Files (x86)\\Dropbox\\Client\\Dropbox.exe'
real_path='C:\\Program Files (x86)\\Dropbox\\Client\\Dropbox.exe'
mode=0o100777 uid=0 gid=0
parent mode=0o40777 uid=0 gid=0
trace.__file__: 'C:\\Program Files (x86)\\Dropbox\\Client\\192.4.4605\\python-packages.zip\\dropbox\\client\\ui\\common\\boot_error.pyc'
real_path='C:\\Program Files (x86)\\Dropbox\\Client\\192.4.4605\\python-packages.zip\\dropbox\\client\\ui\\common\\boot_error.pyc'
not found
parent not found
TMP: C:\Users\testusr\AppData\Local\Temp
TEMP: C:\Users\testusr\AppData\Local\Temp
tempdir: 'C:\\Users\\testusr\\AppData\\Local\\Temp'
real_path='C:\\Users\\testusr\\AppData\\Local\\Temp'
mode=0o40777 uid=0 gid=0
parent mode=0o40777 uid=0 gid=0
Traceback (most recent call last):
File "desktop/dropbox/client/main.py", line 8056, in main_startup
File "desktop/dropbox/client/main.py", line 2656, in initialize
File "desktop/dropbox/client/main.py", line 1681, in startup_low
File "desktop/dropbox/client/main.py", line 1296, in safe_makedirs
File "desktop/dropbox/fsutil.py", line 706, in safe_makedirs
File "desktop/dropbox/overrides.py", line 240, in makedirs
File "desktop/dropbox/overrides.py", line 240, in makedirs
File "desktop/dropbox/overrides.py", line 240, in makedirs
[Previous line repeated 1 more time]
File "desktop/dropbox/overrides.py", line 253, in makedirs
PermissionError: [WinError 5] Access is denied: 'C:\\Users\\Test User'
이에 대해 검색해 보면,
dropbox를 재설치하라는데 그렇게 해도 해결이 안 된다는 글이 나옵니다.
혹시 방법이 없을까요? ^^
일단 오류 메시지에서 appdata 경로를 판정하는데 있어 이전 이름인 "Test User"를 그대로 사용하고 있는데요, 재미있는 건 중간에 나오듯이 "TMP" 관련 경로는 정상적으로 바뀐 이름("testusr")을 적용하고 있다는 점입니다.
뭐 그럴 수 있습니다. 어딘가 "Test User" 설정을 하드코딩해서 들고 있을 것입니다. 관련 정보가 있을 수 있는 곳으로, info.json이 하나 있는데요,
// 경로: C:\Users\testusr\AppData\Local\Dropbox\info.json
C:\Users\kevin\AppData\Local\Dropbox\info.json
{"personal": {"path": "C:\\Users\\Test User\\Dropbox", "host": 14084970785, "is_team": false, "subscription_type": "Basic"}}
저 경로를 바꿔줘도 안 됩니다. ^^; 혹시나 싶어 %USERNAME% 출력을 사용하나 싶어서,
C:\temp> echo %USERNAME%
testusr
제어판의 "Windows Tools" / "Computer Management"를 이용해 사용자 이름까지 "Test User"에서 "testusr"로 변경했는데도, 여전히 오류가 발생합니다. ^^;
그다음, 레지스트리를 뒤져 "Test User"라고 되어 있는 경로를 찾았는데,
경로: HKEY_CLASSES_ROOT\CLSID\{E31EA727-12ED-4702-820C-4B6445F28E1A}\Instance\InitPropertyBag
경로: HKEY_CLASSES_ROOT\WOW6432Node\CLSID\{E31EA727-12ED-4702-820C-4B6445F28E1A}\Instance\InitPropertyBag
이름: TargetFolderPath
이 값을 바꿔도 여전히 오류는 계속 발생합니다. 음... 별로 중요한 문제도 아니니 더 시간을 끌기가 아깝군요. ^^; 그래서 그냥
Junction을 사용해 해결했습니다.
mklink /J "C:\Users\Test User" "C:\Users\testusr"
참고로, 위와 같이 Junction으로 해결했더니 info.json 파일과 레지스트리의 경로를 ("testusr"로) 바꿨던 것들이 다시 ("Test User"로) 원복이 되었습니다.
상황을 잠깐 정리해 보면, 제 경우에 로컬 PC의 어디를 뒤져도 이전 이름을 사용하고 있는 저장소가 없는데도 해결이 안 된다는 점과, 재설치를 했는데도 오류가 계속된다는 것은... 아마도 dropbox를 처음 설치해 device를 등록하는 과정에서 그 당시의 사용자 계정이 서버로 전송돼 재사용되는 것이 아닌가... 하는 예측이 됩니다.
즉, device 등록을 해제하고 다시 등록하면 되지 않을까... 라는 예상을 할 수 있습니다.
일단, 저걸 테스트해볼 수는 있는데 제 경우에는 다시 등록하는 과정에서 파일들의 재동기화로 인해 날짜(Date modified)가 뒤섞이는 것을 원치 않으므로 그냥 Junction으로 해결한 것입니다.
혹시나, device 재등록으로 해결이 되신 분이 있다면 덧글 부탁드립니다. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]