Я создаю установщик, используя проект развертывания (установки) Visual Studio 2008.У проекта есть условие запуска «Привилегированный», поэтому запускать его могут только администраторы.Он использует модуль слияния, предоставленный третьей стороной, для регистрации COM-компонента.COM-компонент предоставляется через .NET Interop DLL, которая, в свою очередь, используется программой, для которой я собираю установщик.(Особенности: это модуль слияния Intuit, устанавливающий инфраструктуру QBFC).
После завершения установки компонент COM не может быть загружен.Ошибка "класс не зарегистрирован".Но когда я захожу в реестр, я вижу, что все правильные записи находятся под HKEY_CLASSES_ROOT\CLSID\{the class id}
- где идентификатор класса совпадает с идентификатором класса сообщения об ошибке.Если я затем открою командную строку в административном режиме и заново зарегистрирую DLL-сервер COM-сервера с помощью Regsvr32, все исправлено, но я не вижу изменений в KEY_CLASSES_ROOT\CLSID
Когда я проверяю систему с помощьюМонитор процесса, пока он получает ошибку «класс не зарегистрирован», я вижу, что приложение получает ошибку «имя не найдено», когда оно пытается открыть CLSID, даже если CLSID определенно есть (я проверил дважды и трижды),Я думаю, это как-то связано с разрешениями.Альтернативная теория заключается в том, что, возможно, сообщение «класс не зарегистрирован» исходит от зависимого компонента, но это не объясняет того, что я вижу в мониторе процесса.
Все эти результаты теста получены из Windows7 Ultimate 32-битная операционная система.
Какие шаги вы предпримете, чтобы решить эту проблему?