Мне нужно немного читать мысли, так как я стараюсь делать то, что я не совсем понимаю.Использование 32-битного COM-объекта с C# или VBS на Vista 64-бит и получение ошибки 80004005
Существует 32-разрядное приложение (электронное торговое приложение CQG), которое предоставляет COM API для внешнего доступа. У меня есть примеры программ и скриптов, которые получают доступ к этому API из Excel, .NET (C++, VB и C#) и оболочки VBScript. У меня эти .NET-приложения как исходный код и как скомпилированные исполняемые файлы (32-разрядные, скомпилированные в Windows XP).
Теперь у меня Windows Vista Home 64-бит, который заставляет мою голову вращаться. Примеры Excel работают очень хорошо (в Excel 2003). Скомпилированные исполняемые файлы .NET также работают.
Но когда я пытаюсь запустить образец .NET C#, преобразованный и скомпилированный Visual Studio C# Expression, или запускает скрипт VBScript, я получаю ошибку 80004005 при попытке создать объект. Первоначально приложение .NET также дало мне 80040154, но потом я понял, как заставить его производить 32-битный код, а не 64-битный, поэтому теперь ошибки в C# и VBScript-приложениях одинаковы. Это все, что я получил сейчас.
И да, я попытался запустить 32-разрядные версии cscript.exe/WScript из папки SysWOW64 на моем VBS, но результат все тот же (80004005).
Как решить эту проблему? Я почти готов поверить, что это практически невозможно, но тот факт, что Excel VBA работает, и исполняемые файлы .NET, скомпилированные в Windows XP, просто прекрасны, просто меня злит. Должен быть способ победить это (какой-то секрет, который, вероятно, знают только разработчики Windows Vista)! Буду признателен за любую помощь!
PS: Я считаю, что образцы кода не имеет смысла здесь, но это линия VBScript, которая терпит неудачу:
Set CEL = WScript.CreateObject("CQG.CQGCEL.4.0", "CEL_")
И это C#:
CQGCEL CEL = new CQGCEL();
Обновление: Забыла скажем, UAC выключен, конечно. И я работаю со счета с правами администратора.
Я также пробовал смотреть, какие ключи реестра читаются с помощью Process Monitor, но все выглядит нормально для GUID этого объекта. Я не мог распознать некоторые другие GUID, поэтому я не уверен, были ли они критическими или нет.
Есть ли вероятность, что этот объект COM использует Internet Explorer и получает неправильный (например, Internet Explorer 7 вместо движка Internet Explorer 6 или что-то в этом роде)?
Вы когда-нибудь это понимали? –