ClassFactory не может предоставить запрошенный класс 0x80040111 Ошибка: -2147221231 - PullRequest
1 голос
/ 09 марта 2009

Использование Visual Studio 2008 Я впервые столкнулся с этим при попытке открыть стандартное диалоговое окно сохранения файла в Visual Basic. До сих пор я работал над этим после бесплодных поисков. Теперь я обнаружил, что любое действие, которое может вызвать диалог сохранения / открытия (например, ctrl-O), также не выполняется. Я искал больше и до сих пор не знаю, как это исправить.

Материал, который я знаю: Это не ошибка Visual Studio, по-видимому, она может возникать в любом количестве других приложений (поэтому ее поиск раздражает)

Это связано либо с .NET, либо с COM, я безуспешно пытался переустановить все .NET, и я никогда не шутил с COM, даже не знаю, что это такое.

Что-то отсутствует, не на месте или это могут быть проблемы с версией DLL.

Я действительно не хочу иметь дело с деинсталляцией VS2008, MS Office (как мне показалось, одним предложенным результатом) или любого другого большого приложения.

Ответы [ 4 ]

1 голос
/ 09 марта 2009

Основная проблема заключается в том, что CoCreateInstance не работает. Без подключения отладчика и взлома CoCreateInstance будет довольно сложно отследить, в чем проблема. И даже если вы потратите время на это, вряд ли вы сможете исправить ошибку.

Я согласен, что переустановка - это последнее средство. Но промежуточный шаг - попытаться восстановить установку. Если вы снова вставите установочный диск VS, одним из вариантов будет «Восстановить» установку. Возможно, вам придется пройти через Установка и удаление программ, чтобы получить эту опцию.

Восстановление происходит намного быстрее, чем удаление / переустановка, и, скорее всего, исправит эту конкретную проблему.

EDIT

Оператор OP сообщил, что ремонт выполнен успешно, но ошибка не устранена. Можете ли вы проверить журнал событий и посмотреть, генерируется ли более конкретная ошибка для этого сбоя?

1 голос
/ 01 марта 2010

Я столкнулся с подобной проблемой в VS 2008, и, к счастью, она была решена с помощью приведенного ниже решения Попробуй это !!

Найдите devenv.exe. Щелкните правой кнопкой мыши> Свойства> Снимите флажок Отключить параметр визуальных тем

1 голос
/ 09 марта 2009

Итак, кто-то где-то пытается создать какой-то объект, который, по его мнению, ему необходим для выполнения своей работы. Это может быть или не быть объектом Visual Studio. Поскольку он проявляется в диалоге «Сохранить / Открыть», он вполне может быть объектом оболочки.

Наиболее вероятным объяснением является то, что запись реестра для объекта была каким-то образом повреждена, или dll, которая экспортирует объект, повреждена каким-то образом. Для последнего он может отсутствовать полностью или просто по какой-то причине в плохом состоянии.

Одна вещь, которую вы можете попробовать сделать, это запустить regsvr32 на вероятных библиотеках-кандидатах, но это просто выстрел в темноте.

Другой, более продвинутый вариант - подключить отладчик (например, ntsd или windbg) к самому процессу Visual Studio и установить точку останова на CoCreateInstance () в системной dll (убедитесь, что его точную сигнатуру ищите в заголовочный файл - он может быть # определен для чего-то еще). Затем получите GUID для объекта, который он передает в качестве аргумента CoCreateInstance (). Поиск этого в вашем реестре (или в реестре друзей, у которого нет этой проблемы) должен дать вам хорошее представление о том, с какой DLL вам нужно связываться.

0 голосов
/ 28 апреля 2010

Снятие отметки Disable Visual Themes у меня не сработало, но работа в режиме совместимости с xp исправила это. Я предполагаю, что проблема в отсутствии DLL.

...