문제

COM 서버 DLL과 Windows XP에서 등록이없는 작업에 필요한 매니페스트를 만들었습니다. 나는 모든 종류의 조합 (등록 유무에 관계없이)을 테스트했으며 모든 경우 클라이언트 응용 프로그램은 매니페스트가 존재하는 경우 라이브러리의 나란히 버전을보고 등록 된 경우 (또는 COM 오류가 발생합니다. 등록이 전혀없는 경우). Windows XP 개발 컴퓨터에서 테스트했으며 파일 (DLL, 클라이언트 EXE 및 각각 하나의 매니페스트)을 동료에게 주었으며, 이들은 자신의 Windows XP 시스템에서 모든 것을 성공적으로 실행했습니다. 매니페스트는 임베디드 리소스가 아닌 외부 XML 파일입니다. 여태까지는 그런대로 잘됐다.

그러나 파일을 Windows Server 2003 시스템에 복사하면 작동하지 않습니다. 조용한 실패가 발생하지만 응용 프로그램 이벤트 로그에서 응용 프로그램 오류가 발생합니다 (아래 참조). DLL을 해제하고 매니페스트를 제거하면 비슷한 오류가 발생합니다 (명령 프롬프트에서는 무음가이지만 이벤트 로그의 응용 프로그램 오류). 분명히 등록을 찾는 데 문제가 있습니다. 회사에서 액세스 할 수있는 모든 Windows Server 2003 시스템 에서이 작업을 재현했습니다. 나란히/등록이없는 COM의 Microsoft 문서에 따르면 Windows XP 이상, Windows Server 2003 이상에서 작동해야합니다.

명확하게 말하면, 동일한 클라이언트가 동일한 Windows Server 2003 머신에서 완벽하게 실행됩니다. 등기 (즉, Registration-Free COM에 사용하려는 동일한 로그인 자격 증명에서 동일한 COM DLL 버전을 사용합니다. 다시 말해, 등록이없는 COM 문제로 가장 한 본질적인 문제는 없습니다.이 클라이언트와 서버는 서버가 레지스트리에 전 세계적으로 등록 될 때 정상적으로 작동합니다.

더 조사하는 방법에 대한 아이디어가 있습니까? 저는 Windows Server의 전문가가 아니지만이 지원을 가능하게하기 위해 변경해야 할 정책 설정이 있습니까? 필요한 변경 사항을 찾을 수 있다면 기술 지원/인프라 사람들은 아마도 그렇게하지 않을 것이지만,이 문제를 늪에 빠뜨릴 때도 연구하기 위해 의존 할 수는 없습니다.

DLL이 Delphi 2007에 작성된 반면 (클라이언트는 Visual C ++로 작성된 반면) DLL은 중요하다면 (나는 그것이 생각하지 않지만 결코 알지 못합니다).

Event Type: Information
Event Source:   Application Error
Event Category: (100)
Event ID:   1004
Date:       5/2/2009
Time:       8:07:45 AM
User:       N/A
Computer:   ***server name****
Description:
Reporting queued error: faulting application ***program name***.exe, version 0.0.0.0, faulting module ***program name***.exe, version 0.0.0.0, fault address 0x0002ac9e.

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
도움이 되었습니까?

해결책

찾아야 할 한 가지는 EXE에 내부 매니페스트가 있는지 여부입니다. XP에서 EXE 매니페스트 검색 순서는 내부 외부입니다. 서버 2003 이후에서는 주문이 내부적으로 외부입니다.

다른 팁

Delphi 7에 COM 서버가 생성 된 경우 COM 서버가 등록되지 않고 클라이언트 응용 프로그램이 제한된 사용자 계정에서 시작된 경우 유사한 문제를 보았습니다. DLLL의 COM 구현은 DLL의 레지버버 기능이 항상 등록 정보를 업데이트하려고 시도했기 때문입니다. 명시 적으로 호출되지 않았습니다.

이것이 문제인지 여부를 확인하려면 무제한 관리 권한이있는 계정에서 클라이언트 응용 프로그램을 실행하십시오.

MSDN은 Windows 2003에서 등록 무료 COM 서버 문제가 시스템 이벤트 로그의 특정 섹션에 자세히 설명해야한다고 언급합니다.

등록이없는 COM 문제를 해결하면 Windows Server 2003의 이벤트 뷰어가 친구입니다. Windows XP 또는 Windows Server 2003이 구성 오류를 감지하면 일반적으로 시작한 응용 프로그램에 제목이있는 오류 메시지 상자가 표시되고 메시지를 포함하는 메시지가 포함되어있어 응용 프로그램 구성이 잘못 되었기 때문에이 응용 프로그램이 시작되지 않았습니다. 응용 프로그램이 다시 설치 될 수 있습니다. 문제." 이 메시지를 볼 때마다 Windows Server 2003에서 문제를 재현하고 시스템 이벤트 로그를 참조하고 사이드 비 사이드 소스에서 이벤트를 찾는 것이 좋습니다. 이 경우 Windows XP 이벤트 로그를 보지 않는다고 제안하지 않는 이유는 [Path] [Application Filename] .manifest. 참조 오류 메시지에 대해 활성화 컨텍스트 생성 실패"와 같은 메시지가 항상 포함되기 때문입니다. "문제를 식별하는 데 도움이되지 않는 작업이 성공적으로 완료되었습니다. http://msdn.microsoft.com/en-us/library/ms973913.aspx#rfacomwalk_topic6

또한 가능하면 사용하는 매니페스트 파일의 파일 이름과 내용을 알려주십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top