완전히 이해하지 못하는 부분을 수행하려고하므로 여기를 읽어야합니다.Vista 64 비트에서 C# 또는 VBS의 32 비트 COM 개체 사용 및 오류 발생 80004005
외부 액세스 용 COM API를 제공하는 32 비트 응용 프로그램 (CQG라는 전자 거래 응용 프로그램)이 있습니다. Excel, .NET (C++, VB 및 C#) 및 셸 VBScript에서이 API에 액세스하는 샘플 프로그램 및 스크립트가 있습니다. 필자는 이러한 .NET 응용 프로그램을 소스 코드 및 컴파일 된 실행 파일 (32 비트, Windows XP에서 컴파일 됨)로 사용합니다.
이제 Windows Vista Home 64 비트가 나왔습니다. Excel 예제가 제대로 작동합니다 (Excel 2003). 컴파일 된 .NET 샘플 실행 파일도 작동합니다.
.NET C# 샘플을 변환하여 Visual Studio C# Expression에서 컴파일하거나 VBScript 스크립트를 실행하려고하면 개체를 만들 때 오류 80004005가 발생합니다. 처음에는 .NET 응용 프로그램도 나에게 80040154를주었습니다. 그렇지만 C# 및 VBScript 응용 프로그램의 오류가 동일하므로 32 비트 코드가 아닌 64 비트를 생성하는 방법을 생각했습니다. 그게 지금 내가 얻은 모든 진전이야.
그리고 네, 내 VBS의 SysWOW64 폴더에서 cscript.exe/WScript의 32 비트 버전을 실행 해 보았지만 그래도 결과는 동일합니다 (80004005).
이 문제를 해결하는 방법은 무엇입니까? 거의 불가능하다고 생각할 준비가 거의 끝났지 만 Excel VBA가 작동하고 Windows XP에서 컴파일 된 .NET 실행 파일은 정상적으로 작동하므로 분개하게됩니다. 이 문제를 해결할 수있는 방법이 있어야합니다 (Windows Vista 개발자가 알고있는 비밀). 나는 어떤 도움을 주셔서 감사합니다!
PS : 나는 코드 샘플 여기에 많은 이해가되지 않는 생각하지만, 이것은 실패의 VBScript의 라인 :
Set CEL = WScript.CreateObject("CQG.CQGCEL.4.0", "CEL_")
을 그리고 이것은 C#을 :
CQGCEL CEL = new CQGCEL();
업데이트 : 깜빡 물론 UAC은 꺼져 있습니다. 관리자 특권이있는 계정에서 일하고 있습니다.
또한 프로세스 모니터를 사용하여 읽은 레지스트리 키를 보려고했지만이 개체의 GUID는 모두 정상적으로 보입니다. 다른 GUID도 인식 할 수 없으므로 중요도가 높은지 아닌지 확실하지 않습니다.
이 COM 개체가 Internet Explorer를 사용하고 잘못된 것을 가져올 가능성이 있습니까 (예 : Internet Explorer 6 엔진 또는 그 대신 Internet Explorer 7)?
혹시이 알아낼 했습니까? –