Enjoy Development

지식관리, 메모장, 기억저장소, 참고자료, ...

VB6 MSCOMCTL.OCX 에러 해결 방법

2014.03.06 13:02 | 조회 수 : 140346

MSCOMCTL.OCX - Microsoft Windows Common Controls 6.0

     

MSCOMCTL.OCX 에러 메시지#1

     

MSCOMCTL.OCX 에러 메시지#2

     

MSCOMCTL.OCX(Microsoft Windows Common Controls 6.0) 에러가 발생하는 경우를 분석해보니 다음 세 가지로 정리된다.

Case1) MSCOMCTL.OCX 파일이 등록(regsvr32)되지 않았다.

Case2) typelib가 등록(rebtlib, msdatsrc.tlb)되지 않았다.

Case3) VBP 파일에 입력된 MSCOMCTL.OCX의 버전이 다르다.

     

각각에 대한 에러 메시지는 다음 중 한 가지가 될 수 있으며, 메시지 내용만으로는 정확한 원인을 알 수 없다.

(서로 다른 원인에 대해 동일한 에러 메시지를 표시하는 경우 있음)

     

  • 개체 라이브러리가 등록되지 않았습니다.
  • Library not registered.
  • ''을(를) 로드할 수 없습니다.
  • C:\Windows\system32\MSCOMCTL.OCX could not be loaded.
  • 기타...

     

각각에 대한 해결 방법은 다음과 같다.

     

Case1) MSCOMCTL.OCX 파일이 등록(regsvr32)되지 않았다.

해결 방법) regsvr32 명령으로 mscomctl.ocx 파일을 레지스트리에 등록한다.

cd C:\Windows\system32

regsvr32 mscomctl.ocx

윈도우 64bit인 경우는 system32가 아닌 SysWOW64 폴더에서 실행한다.

cd C:\Windows\SysWOW64

regsvr32 mscomctl.ocx

     

Case2) typelib가 등록(rebtlib, msdatsrc.tlb)되지 않았다.

해결 방법) regtlib 명령으로 msdatsrc.tlb 파일을 레지스트리에 등록한다.

※ regtlib.exe 파일은 Visual Basic 설치하면 C:\Windows 폴더에 있다.

cd C:\Windows\system32

regtlib msdatsrc.tlb

윈도우 64bit인 경우는 system32가 아닌 SysWOW64 폴더에서 실행한다.

cd C:\Windows\SysWOW64

regtlib msdatsrc.tlb

     

Case3) VBP 파일에 입력된 MSCOMCTL.OCX의 버전이 다르다.

현상1) VBP 파일을 열면 에러가 발생한다.

현상2) VBP 파일에 입력된 MSCOMCTL.OCX 파일의 버전이 2.0에서 2.1로 자동으로 변경된다.

원인) IE10 설치??? MS 업데이트 KB2687323 ???

해결 방법1) VBP 파일을 텍스트 에디터로 열어서 MSCOMCTL.OCX의 버전 정보를 수정(2.0 -> 2.1 또는 2.1 -> 2.0)한다. - 미확인

Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX

Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX

     

VBP에서의 버전 정보가 자동으로 변경(2.0 -> 2.1)되는 것을 막기 위해 VBP 파일에 아래 줄을 추가하거나

NoControlUpgrade=1

프로젝트 속성에서 "ActiveX 컨트롤 업그레이드"를 체크하지 않는다.

※ VBP를 열면 버전 정보가 변경되므로 텍스트 에디터로 수정 후 VBP를 연다.

     

해결 방법2) 레지스트리에서 2.0 버전 정보를 삭제한다. - 미확인

     

레지스트리에서 직접 삭제하거나 아래 BATCH 내용을 파일(xxx.bat)로 저장 후 실행한다.

REM 출처 : http://stackoverflow.com/questions/11982719/vb6-ide-cannot-load-mscomctl-ocx-after-update-kb-2687323

@echo off

reg query "HKEY_CLASSES_ROOT\typelib\{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}\2.1"

if %errorlevel%==0 GOTO DELREGKEY

if %errorlevel%==1 GOTO REGISTEROCX

     

:DELREGKEY

reg delete hkcr\typelib\{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}\2.0 /f

     

:REGISTEROCX

if exist %systemroot%\SysWOW64\cscript.exe goto 64

%systemroot%\system32\regsvr32 /u mscomctl.ocx /s

%systemroot%\system32\regsvr32 mscomctl.ocx /s

exit

     

:64

%systemroot%\sysWOW64\regsvr32 /u mscomctl.ocx /s

%systemroot%\sysWOW64\regsvr32 mscomctl.ocx /s

exit

     

참고) RegDllView

http://www.nirsoft.net/utils/registered_dll_view.html

     

참고 - 관련 글 모음

Powered by EnjoyDev | Xpress Engine | DNS Powered by DNSEver.com