디버깅 기술 : 129 . guidgen - Encountered an improper argument . 오류 해결 방법 ( 및 windbg 분석 ) 
 CStringT _ WV ? $ StrTraitMFC _ DLL _ WV ? $ ChTraitsCRT _ WATLATLQAEHIZ " 코드 로 문제 를 좁힐 수 있 고 , 그 함수 에 진입 해 살펴보 면 , 
 0 : 000 > uf @ eip 
 mfc 140 u ! ATL : : CStringT < wchar _ t , StrTraitMFC _ DLL < wchar _ t , ATL : : ChTraitsCRT < wchar _ t > > >:: LoadStringW [ d : \ agent \_ work \ 3 \ s \ src \ vctools \ vc 7 libs \ ship \ atlmfc \ include \ cstringt . h @ 2330 ] : 
 2330 5 a 8742 a 0 55 push ebp 
 2330 5 a 8742 a 1 8 bec mov ebp , esp 
 2330 5 a 8742 a 3 56 push esi 
 2331 5 a 8742 a 4 ff 7508 push dword ptr [ ebp + 8 ] 
 2330 5 a 8742 a 7 8 bf 1 mov esi , ecx 
 2331 5 a 8742 a 9 e 8 b 283 ffff call mfc 140 u ! A f xFindStringResourceHandle ( 5 a 86 c 660 ) / / bp mfc 140 u ! A f xFindStringResourceHandle 
 2332 5 a 8742 ae 85 c 0 test eax , eax 
 2332 5 a 8742 b 0 740 b je mfc 140 u ! ATL : : CStringT < wchar _ t , StrTraitMFC _ DLL < wchar _ t , ATL : : ChTraitsCRT < wchar _ t > > >:: LoadStringW + 0 x 1 d ( 5 a 8742 bd ) Branch 
 mfc 140 u ! ATL : : CStringT < wchar _ t , StrTraitMFC _ DLL < wchar _ t , ATL : : ChTraitsCRT < wchar _ t > > >:: LoadStringW + 0 x 12 [ d : \ agent \_ work \ 3 \ s \ src \ vctools \ vc 7 libs \ ship \ atlmfc \ include \ cstringt . h @ 2337 ] : 
 2337 5 a 8742 b 2 ff 7508 push dword ptr [ ebp + 8 ] 
 2337 5 a 8742 b 5 8 bce mov ecx , esi 
 2337 5 a 8742 b 7 50 push eax 
 2337 5 a 8742 b 8 e 813000000 call mfc 140 u ! ATL : : CStringT < wchar _ t , StrTraitMFC _ DLL < wchar _ t , ATL : : ChTraitsCRT < wchar _ t > > >:: LoadStringW ( 5 a 8742 d 0 ) 
 mfc 140 u ! ATL : : CStringT < wchar _ t , StrTraitMFC _ DLL < wchar _ t , ATL : : ChTraitsCRT < wchar _ t > > >:: LoadStringW + 0 x 1 d [ d : \ agent \_ work \ 3 \ s \ src \ vctools \ vc 7 libs \ ship \ atlmfc \ include \ cstringt . h @ 2337 ] : 
 2337 5 a 8742 bd 5 e pop esi 
 2338 5 a 8742 be 5 d pop ebp 
 2338 5 a 8742 bf c 20400 ret 4 
 A f xFindStringResourceHandle 의 반환 값 ( eax ) 이 null 로 나오 는 것 을 확인 할 수 있 습니다 . 혹시나 싶 어서 guidgen . exe 가 정상 적 으로 동작 하 는 PC 에서 위 의 과정 을 살펴보 니 A f xFindStringResourceHandle 이 반환 하 는 값 은 다음 의 경로 에 해당 하 는 DLL 의 로딩 주소 였 습니다 . 
 C : \ Program Files ( x 86 ) \ Microsoft Visual Studio \ 2019 \ Enterprise \ Common 7 \ Tools \ 1033 \ guidgenui . dll 
 그러 고 보 니 , 문제 가 발생 한 PC 의 경우 에 는 한글 비주얼 스튜디오 가 설치 되 어 있 었 고 locale 에 따라 1042 폴더 하위 에 마찬가지 로 guidgenui . dll 파일 이 놓여 있 었 습니다 . 
 C : \ Program Files ( x 86 ) \ Microsoft Visual Studio \ 2019 \ Enterprise \ Common 7 \ Tools \ 1042 \ guidgenui . dll 
 하 지만 , 정작 guidgen . exe 가 실행 되 었 을 때 는 guidgenui . dll 파일 을 1042 로부터 로딩 을 하 지 않 았 습니다 . 혹시나 싶 어서 ^^ 기존 의 " 1042 " 폴더 를 그대로 " 1033 " 으로 복사 해 실행 해 봤 더니 , 
 아주 잘 실행 이 되 는군요 . 
 그러니까 , 문제 의 원인 은 guidgen . exe 가 다 국어 지원 을 하 는 환경 은 갖췄 지만 정작 코드 에서 는 영문 locale 만 을 대상 으로 동작 하 는 버그 를 갖 고 있 던 것 입니다 . 그렇 다 해도 여전히 이해 가 안 되 는 부분 이 있 습니다 . 일반 적 으로 다 국어 지원 은 해당 언어 가 없 을 때 fallback 차원 에서 EXE 스스로 들 고 있 는 중립 리소스 를 사용 하 는 것 이 관례 입니다 . 
 실제로 guidgen . exe 의 리소스 영역 을 열 어 보 면 String Resource 가 마련 되 어 있 고 guidgenui . dll 과 동일 한 리소스 ID 의 값 들 을 가지 고 있 습니다 . 암튼 , 문제 분석 은 여기 까지 하 는 걸로 . ^^ 
 [ 최초 등록 일 : 8 / 23 / 2019 ] 
 [ 최종 수정 일 : 8 / 23 / 2019 ] 
 12042 정성태 10 / 26 / 2019 553 오류 유형 : 573 . OneDrive 하위 에 위치 한 Documents , Desktop 폴더 에 대한 권한 변경 시 " Unable to display current owner " 
 12041 정성태 10 / 23 / 2019 463 오류 유형 : 572 . mstest . exe - The load test results database could not be opened . 
 12040 정성태 10 / 23 / 2019 778 오류 유형 : 571 . Unhandled Exception : System . Net . Mail . SmtpException : Transaction failed . The server response was : 5 . 2 . 0 STOREDRV . Submission . Exception : SendAsDeniedException . MapiExceptionSendAsDenied 
 12039 정성태 10 / 22 / 2019 589 스크립트 : 16 . cmd . exe 의 for 문 에서 는 ERRORLEVEL 이 설정 되 지 않 는 문제 
 12037 정성태 10 / 15 / 2019 767 . NET Framework : 867 . C # - Encoding . Default 값 을 바꿀 수 있 을까요 ? 1 
 12036 정성태 10 / 21 / 2019 1289 . NET Framework : 866 . C # - 고 성능 이 필요 한 환경 에서 GC 가 발생 하 지 않 는 네이티브 힙 사용 1 
 12035 정성태 10 / 13 / 2019 628 개발 환경 구성 : 461 . C # 8 . 0 의 # nulable 관련 특성 을 . NET Framework 프로젝트 에서 사용 하 는 방법 1 
 12034 정성태 1 / 31 / 2020 880 개발 환경 구성 : 460 . . NET Core 환경 에서 ( 프로젝트 가 아닌 ) C # 코드 파일 을 입력 으로 컴파일 하 는 방법 [ 1 ] 
 12033 정성태 10 / 11 / 2019 1213 개발 환경 구성 : 459 . . NET Framework 프로젝트 에서 C # 8 . 0 컴파일러 를 사용 하 는 방법 
 12032 정성태 11 / 25 / 2019 774 . NET Framework : 865 . . NET Core 2 . 2 / 3 . 0 웹 프로젝트 를 IIS 에서 호스팅 ( Inproc , out - of - proc ) 하 는 방법 - AspNetCoreModuleV 2 소개 
 12031 정성태 10 / 7 / 2019 502 오류 유형 : 569 . Azure Site Extension 업그레이드 시 " System . IO . IOException : There is not enough space on the disk " 예외 발생 
 12030 정성태 11 / 12 / 2019 2095 . NET Framework : 864 . . NET Conf 2019 Korea - " 닷 넷 17 년 의 변화 정리 및 닷 넷 코어 3 . 0 " 발표 자료 [ 1 ] 1 
 12029 정성태 9 / 27 / 2019 598 제니퍼 . NET : 29 . Jennifersoft provides a trial promotion on its APM solution such as JENNIFER , PHP , and . NET in 2019 and shares the examples of their application . 
 12028 정성태 9 / 26 / 2019 716 . NET Framework : 863 . C # - Thread . Suspend 호출 시 응용 프로그램 hang 현상 을 해결 하 기 위한 시도 1 
 12027 정성태 9 / 26 / 2019 443 오류 유형 : 568 . Consider app . config remapping of assembly "..." from Version "..." [ ...] to Version "..." [ ...] to solve conflict and get rid of warning . 
 12026 정성태 9 / 26 / 2019 618 . NET Framework : 862 . C # - Active Directory 의 LDAP 경로 및 정보 조회 
 12025 정성태 9 / 25 / 2019 719 제니퍼 . NET : 28 . APM 솔루션 제니퍼 , PHP , . NET 무료 사용 프로모션 2019 및 적용 사례 ( 8 ) 
 12024 정성태 9 / 20 / 2019 792 . NET Framework : 861 . HttpClient 와 HttpClientHandler 의 관계 
 12023 정성태 9 / 19 / 2019 738 . NET Framework : 860 . ServicePointManager . DefaultConnectionLimit 와 HttpClient 의 관계 1 
 12022 정성태 9 / 12 / 2019 1603 개발 환경 구성 : 458 . C # 8 . 0 ( Preview ) 신규 문법 을 위한 개발 환경 구성 [ 3 ] 
 12021 정성태 4 / 20 / 2020 3721 도서 : 시작 하 세요 ! C # 8 . 0 프로그래밍 [ 3 ] 
 12020 정성태 9 / 11 / 2019 762 VC ++: 134 . SYSTEMTIME 값 기준 으로 특정 시간 이 지났 는지 를 판단 하 는 함수 
 12019 정성태 9 / 11 / 2019 608 Linux : 23 . . NET Core + 리눅스 환경 에서 Environment . CurrentDirectory 접근 시 주 의 사항 
 12018 정성태 9 / 25 / 2019 525 오류 유형 : 567 . IIS - Unrecognized attribute ' targetFramework '. Note that attribute names are case - sensitive . ( D : \ lowSite 4 \ web . config line 11 )