본문 바로가기

아티클/팁/.NET / Windows

vb로 만든 서버 컴퍼넌트 win2003에 설치할 때 주의할 점

간혹 win2003에 visual basic으로 만든 서버측 컴퍼넌트를 설치하면 이런 에러가 나는 경우가 있다 :

이벤트 형식: 오류
이벤트 원본: Application Error
이벤트 범주: (100)
이벤트 ID: 1000
날짜:  2006-12-27
시간:  오전 9:49:09
사용자:  N/A
컴퓨터: NX9000
설명:
오류 있는 응용 프로그램 dllhost.exe, 버전 5.2.3790.0, 오류 있는 모듈 MSVBVM60.DLL, 버전 6.0.97.82, 오류 주소 0x00005453.

자세한 정보는 http://go.microsoft.com/fwlink/events.asp에 있는 도움말 및 지원 센터를 참조하십시오.
데이터:
0000: 41 70 70 6c 69 63 61 74   Applicat
0008: 69 6f 6e 20 46 61 69 6c   ion Fail
0010: 75 72 65 20 20 64 6c 6c   ure  dll
0018: 68 6f 73 74 2e 65 78 65   host.exe
0020: 20 35 2e 32 2e 33 37 39    5.2.379
0028: 30 2e 30 20 69 6e 20 4d   0.0 in M
0030: 53 56 42 56 4d 36 30 2e   SVBVM60.
0038: 44 4c 4c 20 36 2e 30 2e   DLL 6.0.
0040: 39 37 2e 38 32 20 61 74   97.82 at
0048: 20 6f 66 66 73 65 74 20    offset
0050: 30 30 30 30 35 34 35 33   00005453



이벤트 형식: 오류
이벤트 원본: COM+
이벤트 범주: 알 수 없음
이벤트 ID: 4786
날짜:  2006-12-27
시간:  오전 9:49:09
사용자:  N/A
컴퓨터: NX9000
설명:
시스템이 호출한 사용자 지정 구성 요소에 오류가 발생하여 예외가 생성되었습니다. 이것은 사용자 지정 구성 요소에 문제가 있다는 것을 나타냅니다. 오류가 발생한 이 구성 요소의 개발자에게 아래 정보와 함께 오류를 알리십시오.
구성 요소 프로그램 ID:
서버 응용 프로그램 ID: {263528C1-CDF3-4D75-971E-2092417DD7E2}
서버 응용 프로그램 인스턴스 ID:
{A70B654A-5573-47CA-8986-E451B35403AD}
서버 응용 프로그램 이름: SEM
심각한 오류로 인해 프로세스가 종료되었습니다.
예외: C0000005
주소: 0x66005453
호출 스택:
MSVBVM60!ThunRTMain + 0x1ed7
MSVBVM60!ThunRTMain + 0x271f
MSVBVM60!ThunRTMain + 0x365
MSVBVM60!BASIC_DISPINTERFACE_GetTICount + 0xd67a
MSVBVM60!VBDllGetClassObject + 0x91
ole32!CoGetMalloc + 0xe1f
ole32!CoGetTreatAsClass + 0x487
ole32!RegisterDragDrop + 0x309f
ole32!CoGetTreatAsClass + 0x578
ole32!RegisterDragDrop + 0x29f9
COMSVCS!DispManGetContext + 0xc152
ole32!RegisterDragDrop + 0x29f9
ole32!CoInstall + 0xa4f
ole32!CoQueryAuthenticationServices + 0x2afb
ole32!CoQueryAuthenticationServices + 0x3548
ole32!CoQueryAuthenticationServices + 0x3a52
ole32!GetHGlobalFromStream + 0x46a
ole32!CoCreateObjectInContext + 0xfb4
ole32!CoInstall + 0xecb
ole32!CoInstall + 0xb59
RPCRT4!NdrServerInitialize + 0x462
RPCRT4!NdrStubCall2 + 0x217
RPCRT4!CStdStubBuffer_Invoke + 0x82
ole32!WdtpInterfacePointer_UserMarshal + 0x13fa
ole32!WdtpInterfacePointer_UserMarshal + 0x13ad
ole32!ProgIDFromCLSID + 0x1fd3
ole32!ProgIDFromCLSID + 0x1dd1
ole32!DcomChannelSetHResult + 0x851
ole32!WdtpInterfacePointer_UserMarshal + 0x12db
ole32!WdtpInterfacePointer_UserMarshal + 0x116c
ole32!WdtpInterfacePointer_UserMarshal + 0x15ec
ole32!DcomChannelSetHResult + 0x7ca
ole32!DcomChannelSetHResult + 0x5ee
USER32!EnableMenuItem + 0x4cd4
USER32!EnableMenuItem + 0x4da1
USER32!GetWindowLongW + 0x183
USER32!DispatchMessageW + 0xf
COMSVCS!CoCreateActivity + 0x572a
COMSVCS!CoCreateActivity + 0x5657
COMSVCS!CoCreateActivity + 0x5ff0
COMSVCS!CoCreateActivity + 0x643c
msvcrt!_endthreadex + 0xa3
kernel32!GetModuleFileNameA + 0xeb


자세한 정보는 http://go.microsoft.com/fwlink/events.asp에 있는 도움말 및 지원 센터를 참조하십시오.


원래 소스 자체가 막가는 소스였다면 하는 수 없고... 보통 Visual Basic이나 Visual Studio 6를 따로 설치하지 않은 머신에 VB로 만들어진 컴퍼넌트를 배포하려면 VB Runtime을 설치해야 한다는 것 정도는 알고 있을 것이다. 그런데... 무슨 이유에서인지 win2003에 VB Runtime을 설치하면 VB6KO.DLL 파일이 누락되어 있다. 멀쩡히 돌아가는 다른 머신이 있다면 이 파일을 복사해서 system32 폴더에 넣어주는 것 만으로 충분.

msvbvm60.dll이나 oleaut32.dll 파일 버전 안 맞아서 그러는건줄 알고 며칠을 헤맨거냐 대체... -_-;