Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

새로 추가한 ATL COM 객체가 regsvr32.exe로 등록이 안 되는 문제

ATL 프로젝트에 COM 객체를 하나 추가한 다음 잘 사용하다가, 동일한 프로젝트에 새롭게 또 하나의 ATL COM 객체를 추가했습니다. 그리곤 regsvr32.exe로 등록도 오류 없이 잘 되었지만, 이상하게 regedit.exe로 살펴보면 관련 CLSID 등록이 없습니다. 신기하군요. ^^

검색해 보니, 유사한 문제들이 나옵니다.

ATL COM class registration .rgs file defaults
; http://stackoverflow.com/questions/5725424/atl-com-class-registration-rgs-file-defaults

CATLServiceModuleT Not registering components 
; https://connect.microsoft.com/VisualStudio/feedback/details/782281/catlservicemodulet-not-registering-components

아마도 ATL 소스 코드의 버그로 보이는데, "Prog ID" 설정이 없는 .rgs 파일은 등록에서 누락되는 문제가 있습니다.

가령, ATL 프로젝트에서 새롭게 COM 객체를 추가하면 그와 관련된 .rgs 파일이 자동으로 다음과 같은 내용을 가지고 생성됩니다.

HKCR
{
    NoRemove CLSID
    {
        ForceRemove {AC541FFF-CCC8-499A-9E31-AB3E693E62DA} = s 'TestExtension Class'
        {
            ForceRemove Programmable
            InprocServer32 = s '%MODULE%'
            {
                val ThreadingModel = s 'Both'
            }
            TypeLib = s '{E289EFC7-B6A2-4A02-A2DC-829C1D79241C}'
            Version = s '1.0'
        }
    }
}

비록 Prog ID 관련 내용은 없지만 위의 .rgs 파일은 분명히 유효한 스크립트입니다. 그런데도 regsvr32.exe로 등록하면 위의 내용이 레지스트리에 추가되지 않습니다. 대신 Prog ID 내용을 추가해주면 됩니다.

HKCR
{
    WebTestHelper.TestExtension.1 = s 'TestExtension Class'
    {
        CLSID = s '{AC541FFF-CCC8-499A-9E31-AB3E693E62DA}'
    }
    WebTestHelper.TestExtension = s 'TestExtension Class'
    {
        CLSID = s '{AC541FFF-CCC8-499A-9E31-AB3E693E62DA}'
        CurVer = s 'WebTestHelper.TestExtension.1'
    }

    NoRemove CLSID
    {
        ...[생략]...
    }
}

다시 빌드하고 regsvr32.exe로 등록하면 정상적으로 레지스트리에 내용이 추가됩니다. ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 7/19/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 151  152  153  154  155  156  157  158  159  160  161  162  163  164  [165]  ...
NoWriterDateCnt.TitleFile(s)
918정성태8/28/201026839개발 환경 구성: 87. Hyper-V의 네트워크 유형 (3)
917정성태8/26/201021808개발 환경 구성: 86. "Routing and Remote Access"의 "Routing" 기능 활성화 방법
916정성태8/25/201021121개발 환경 구성: 85. 가상 네트워크에 LAN 어댑터 보이거나 감추는 방법
915정성태8/24/201039261개발 환경 구성: 84. Hyper-V의 네트워크 유형 (2)
913정성태8/22/201028350오류 유형: 104. Hyper-V 관리자 - VM 생성 오류 (VHD 생성 오류)
912정성태8/20/201030268.NET Framework: 183. 구조체 포인터 인자에 대한 P/Invoke 정의파일 다운로드1
911정성태8/19/201027139오류 유형: 103. System.Reflection.TargetException파일 다운로드1
910정성태8/19/201037945개발 환경 구성: 83. Hyper-V의 네트워크 유형 (1)
909정성태8/18/201033335오류 유형: 102. System.MissingMethodException
908정성태8/17/201024336개발 환경 구성: 82. Windows Virtual PC의 네트워크 유형 (3)
907정성태8/14/201021855개발 환경 구성: 81. Windows Virtual PC의 네트워크 유형 (2)
906정성태8/13/201030757개발 환경 구성: 80. Windows Virtual PC의 네트워크 유형 (1)
905정성태8/8/201032914Team Foundation Server: 39. 배치 파일로 팀 빌드 구성 [2]파일 다운로드1
904정성태8/8/201035675오류 유형: 101. SignTool Error: No certificates were found that met all the given criteria. [2]
903정성태8/6/201032537Team Foundation Server: 38. TFS 소스 코드 관리 기능 (4) - Branch
902정성태8/5/201024882Team Foundation Server: 37. TFS 2010의 소스 서버 수작업 구성
901정성태8/4/201024177Team Foundation Server: 36. TFS 소스 코드 관리 기능 (3) - Label
900정성태8/3/201026808Team Foundation Server: 35. TFS 소스 코드 관리 기능 (2) - Shelveset
899정성태8/2/201028873Team Foundation Server: 34. TFS 소스 코드 관리 기능 (1) - Changeset
898정성태7/31/201028404.NET Framework: 182. WCF의 InactivityTimeout [1]파일 다운로드1
897정성태7/26/201129630.NET Framework: 181. AssemblyVersion, AssemblyFileVersion, AssemblyInformationalVersion [4]
896정성태7/25/201036389.NET Framework: 180. C# Singleton 인스턴스 생성 [2]
895정성태7/25/201020272VS.NET IDE: 68. Visual Studio 2010 - .NET 1.1 원격 디버깅
894정성태7/25/201026187오류 유형: 100. Could not find the Database Engine startup handle. [1]
893정성태7/25/201027301오류 유형: 99. .NET 4.0 설치된 윈도우 7에서 SQL Server 2008 R2 설치 오류
892정성태7/9/201029076오류 유형: 98. 영문 윈도우에 한글 SQL Server 2008 R2 설치할 때 오류 [4]
... 151  152  153  154  155  156  157  158  159  160  161  162  163  164  [165]  ...