Я создал приложение C # .NET, которое использует элемент управления Adobe ActiveX для отображения PDF.
Он опирается на пару библиотек DLL, которые поставляются вместе с приложением.
Эти библиотеки DLL взаимодействуют с установленным на компьютере локальным приложением Adobe Acrobat или Adobe Acrobat Reader.
Это приложение уже используется некоторым клиентом и отлично работает почти для всех пользователей (я проверяю, что на локальном компьютере уже установлена хотя бы версия 9 Acrobat или Reader).
Я обнаружил 3 случая, когда приложение возвращает сообщение об ошибке «Ошибка HRESULT E_FAIL возвращена при вызове COM-компонента» при попытке загрузки (при загрузке элемента управления activex).
Я проверил одну из машин этого пользователя, и у него установлен Acrobat 9, и он часто использует его без проблем. Похоже, что Acrobat 7 и 8 были установлены одновременно, поскольку для них есть записи в реестре вместе с Acrobat 9.
Я не могу воспроизвести эту проблему локально, поэтому я не знаю точно, в каком направлении идти.
Ошибка в верхней части трассировки стека: System.Runtime.InteropServices.COMException (0x80004005): Ошибка HRESULT E_FAIL возвращена после вызова компонента COM.
Некоторые исследования этой ошибки указывают на то, что это проблема реестра.
Кто-нибудь знает, как решить или обойти эту проблему, или определить, как добраться до сути проблемы?
Полный текст сообщения об ошибке:
System.Runtime.InteropServices.COMException (0x80004005): Ошибка HRESULT E_FAIL была возвращена после вызова компонента COM.
в System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance (Guid & clsid, объект punkOuter, контекст Int32, Guid & iid)
в System.Windows.Forms.AxHost.CreateWithoutLicense (Guid clsid)
в System.Windows.Forms.AxHost.CreateWithLicense (Строковая лицензия, Guid clsid)
в System.Windows.Forms.AxHost.CreateInstanceCore (Guid clsid)
в System.Windows.Forms.AxHost.CreateInstance ()
в System.Windows.Forms.AxHost.GetOcxCreate ()
в System.Windows.Forms.AxHost.TransitionUpTo (состояние Int32)
в System.Windows.Forms.AxHost.CreateHandle ()
в System.Windows.Forms.Control.CreateControl (Boolean fIgnoreVisible)
в System.Windows.Forms.Control.CreateControl (Boolean fIgnoreVisible)
в System.Windows.Forms.AxHost.EndInit ()
в AcrobatChecker.Viewer.InitializeComponent ()
в AcrobatChecker.Viewer..ctor ()
в AcrobatChecker.Form1.btnViewer_Click (Отправитель объекта, EventArgs e)
в System.Windows.Forms.Control.OnClick (EventArgs e)
в System.Windows.Forms.Button.OnClick (EventArgs e)
в System.Windows.Forms.Button.OnMouseUp (MouseEventArgs mevent)
в System.Windows.Forms.Control.WmMouseUp (сообщение & m, кнопка MouseButtons, щелчки Int32)
в System.Windows.Forms.Control.WndProc (сообщение & m)
в System.Windows.Forms.ButtonBase.WndProc (сообщение & m)
в System.Windows.Forms.Button.WndProc (сообщение & m)
в System.Windows.Forms.Control.ControlNativeWindow.OnMessage (Message & m)
в System.Windows.Forms.Control.ControlNativeWindow.WndProc (Message & m)
в System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)