На одном сервере работает, на другом нет.¿API dll не зарегистрирован?ErrNo: 80040154 - PullRequest
0 голосов
/ 05 августа 2011

Я установил на 32-битном сервере IBM Rational ClearQuest и выполнил процесс, использующий API, которые они предоставляют. И там отлично работает.

Когда я переносу это на другой сервер (64 бита), он выдает

Получение фабрики класса COM для компонента с CLSID {94773112-72E8-11D0-A42E-00A024DED613} не удалось из-за следующей ошибки: 80040154.

Я пошел в реестр, чтобы посмотреть, что там было (на обоих серверах), и на первом были некоторые ключи относительно того, где находится эта DLL-библиотека API, которой на 64-битном сервере не было. (Тоже был ключ про рамки)

Я провел исследование в Интернете, чтобы увидеть это .

Мои варианты тогда (по крайней мере, единственные, которые я мог придумать), где:

  • Удалите CQ и переустановите его (что я и сделал и после некоторых сбоев установки и удаления продукта. Резервное копирование прошло без каких-либо изменений в моей реальной проблеме)
  • Зарегистрируйте нужные мне dll с помощью regsrv32 (не работает)
  • Добавить ключи самостоятельно (тоже не работает)

Сегодня я видел этот cscript, здесь с использованием Windows Script Host , но он не работает с c #.

Предположительно, c # .Net2008, когда компилятор говорит "любая" машина, это явно означает и то и другое ... но на всякий случай я изменил ее исключительно на 64-битную ...

И угадайте, что ... да, вы правы ... это тоже не сработало.

Надеюсь, вы мне поможете. Заранее спасибо .-


Редактировать:

  • InstallUtil на C: \ Windows \ Microsoft.Net \ v2.050727 \ на базовом dll не работал
  • asp_regiis (который я пробовал на всякий случай) не работал

Ответы [ 2 ]

2 голосов
/ 05 августа 2011

Тот факт, что вы не смогли найти раздел реестра, является, конечно, источником проблемы.Скорее всего, вы найдете его в HKLM \ Software \ Wow6432Node \ Classes \ CLSID, доме для 32-битных COM-серверов.Предполагая, что они установлены правильно.

Это означает, что вы не можете позволить джиттеру генерировать 64-битный код.64-разрядный процесс не может выполнить любой 32-разрядный код.Project + Properties, вкладка Build, Platform target = x86 - это простое исправление.

1 голос
/ 09 августа 2011

Проблема заключалась в защите Windows Server 2008 UAT

При поиске в Интернете я обнаружил, что при попытке регистрации выдается ошибка 5 Доступ запрещен

решение

Зайдите в Панель управления -> Учетные записи пользователей -> «Включить или отключить контроль учетных записей».Отключите «Использование контроля учетных записей (UAC) для защиты компьютера» и перезагрузите компьютер.Запустите «процесс с API» снова, и он заработал.

...