성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Reordering on an Alpha processor ;...
[정성태] 공유 감사합니다. ^^ 참고로, WPF에서 WindowsF...
[Tom Lee] 답변 감사합니다. 나름의 해결책 연구해보고 여기에도 공유해봅니다...
[정성태] 아래의 글을 보면, MoveWindow 하면 될 듯한데요. ^^...
[Tom Lee] 안녕하세요 올려주신 글 참고하여 WPF 어플리케이션 안에 Uni...
[정성태] A graphical depiction of the steps ...
[정성태] 질문을 주셔서 출판사 측에 문의를 했습니다. 약 한 달 정도 후...
[Thorondor
] @정성태 개인 블로그인데도 거의 커뮤니티 급 인 것 같아요. 요...
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<span> <br /> 비스타에서 Visual C++ 8.0/9.0으로 COM 개체 관련 모듈을 개발하면 UAC로 인해, 컴파일 마지막 즈음에 다음과 같은 에러가 보고됩니다.<br /> <br /> <pre class='code'> ------ Build started: Project: TestCom, Configuration: Debug Win32 ------ Compiling... SimpleCom.cpp Linking... Embedding manifest... Registering output... Project :<b> error PRJ0050: Failed to register output. Please try to register the component from a command prompt with elevated permissions.</b> Build log was saved at "file://c:\temp\vcpp\Debug\BuildLog.htm" TestCom - 1 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== </pre> <br /> 위의 영문과는 달리, 예전에 만들어 놓은 COM 프로젝트인 경우에는 다음과 같이 별로 친절하지 않은 에러가 보고되기도 합니다.<br /> <br /> <pre class='code'> ------ Build started: Project: TestCom, Configuration: Debug Win32 ------ ; Generating code Finished generating code Embedding manifest... Generating XML documentation... 등록하고 있습니다. Project : <b>error PRJ0019: A tool returned an error code from "등록하고 있습니다."</b> Build log was saved at "file://c:\viewer\BuildLog.htm" DxDocsViewer - 1 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 5 up-to-date, 0 skipped ========== </pre> <br /> 어쨌든, 문제는 "오류"가 난다는 것인데요. 왜냐하면, medium 권한에서는 "HKLM"에 "쓰기" 작업이 금지되어 있기 때문입니다. 그럼, 이 문제를 어떻게 해결할 수 있을까요? 이에 대해서는 다음의 토픽에서 ^^; 지극히 간단한 답변을 내려주고 있습니다. (제 딴에는 혹시나 자동화 될 수 있는 수단이 VS.NET 2005 SP1에서 나왔을지도 모른다고 생각하고 찾아본 것이었습니다.)<br /> <br /> <pre class='code'> UAC, Windows Vista & VS 2005 ; <a target='_tab' href='https://devblogs.microsoft.com/cppblog/uac-windows-vista-vs-2005/'>https://devblogs.microsoft.com/cppblog/uac-windows-vista-vs-2005/</a> </pre> <br /> 위의 토픽에서는 다음과 같은 3가지 방법을 제시하고 있습니다.<br /> <br /> <span class='subLastTitle'>1. <a target='_tab' href='/2/1/262'>manifest 파일을 이용한 reg-free COM 개체로 변환.(링크)</a></span> XP, 2003, Vista에서만 동작된다는 제한만 허용할 수 있다면 아예 개발 자체를 이렇게 가는 것이 좋겠습니다. 하지만, 다른 응용 프로그램의 플러그인으로 개발되는 경우라면 사용될 수 없을 것입니다.<br /> <br /> <span class='subLastTitle'>2. 빌드 옵션에서 자동 등록 옵션을 빼고, 수작업으로 등록.</span> 나쁘진 않은 방법입니다. 왜냐하면 COM 개체는 CLSID, PROGID, TypeLib 정도가 한번 등록되면 개발시에는 거의 바뀔 일이 없기 때문입니다. 물론, add-in을 만드는 과정 중간에 레지스트리 변경이 요구되는 단계에서는 수작업 등록을 다시 해줘야 합니다. (물론, batch 파일을 한번 만들어 두면 될 문제입니다.) <br /> <br /> 다음은 빌드 옵션을 조정하는 화면입니다. (자동 등록을 하지 않습니다.)<br /> <br /> <img alt='ide_vcpp_reg_error_1.png' src='/SysWebRes/bbs/ide_vcpp_reg_error_1.png' /><br /> <br /> <span class='subLastTitle'>3. VS.NET IDE를 아예 "관리 권한"으로 승격시켜서 빌드.</span> 2번과 비슷한 경우라고 봐도 될 것입니다. 레지스트리 변경이 있을 때 마다 새롭게 IDE를 high 권한으로 띄우고 컴파일 해주면 되니까요.<br /> <br /> <br /> <br /><br /><hr /><span style='color: Maroon'>[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </span>
첨부파일
스팸 방지용 인증 번호
1307
(왼쪽의 숫자를 입력해야 합니다.)