Заводская ошибка класса COM 80040154 при открытии диалога Get Directory - PullRequest
1 голос
/ 04 сентября 2011

Я знаю, что обычная причина этой проблемы связана с платформой, с которой компилируется компонент, и у меня была проблема в прошлом. Однако это отчет от одного пользователя, который появляется каждый раз, когда он пытается открыть диалоговое окно для выбора файла или каталога. Я не использую здесь какие-либо необычные компоненты, только стандартные. Соответствующие строки в одной из трасс стека:

Получение фабрики класса COM для компонента с CLSID {DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7} не удалось из-за следующих ошибка: 80040154. в System.Windows.Forms.OpenFileDialog.CreateVistaDialog () в System.Windows.Forms.FileDialog.RunDialogVista (IntPtr hWndOwner) в System.Windows.Forms.FileDialog.RunDialog (IntPtr hWndOwner) в System.Windows.Forms.CommonDialog.ShowDialog (владелец IWin32Window) в System.Windows.Forms.CommonDialog.ShowDialog () в ScruffyDuck.AirportDesignEditor.MainForm.getOpenFileInfo (String initialDirectory, строковый фильтр)

Я искал в своем реестре этот CLSID и нашел

% SystemRoot% \ System32 \ comdlg32.dll

Что неудивительно, я полагаю. Я предполагаю, что поскольку существует много других пользователей, у которых нет этой проблемы, это должно быть связано с настройкой пользователей. Буду признателен за любые идеи о том, как посоветовать ему в этом случае.

Большое спасибо

1 Ответ

3 голосов
/ 04 сентября 2011

Я просто догадываюсь сейчас, так как это не вопрос программирования, так что не бери меня, если я не помог, просто поделюсь некоторыми идеями ...: P

Проблема в том, чтосистема не может сделать объект COM из класса COM, указанного этим CLSID.Это может происходить по многим причинам:

  • Библиотека comdlg32.dll не зарегистрирована, попробуйте зарегистрировать ее с regsvr32 comdlg32.dll
  • Системный аккаунт не имеет полного контроля (разрешения) надраздел реестра, содержащий CLSID {DC1C5A9C-E88A-4DDE-A5A1-60F82A20AEF7}.Вы можете проверить это, перейдя (или выполнив поиск в реестре) к этому ключу, щелкнув правой кнопкой мыши по нему и выбрав Permissions..., чтобы предоставить учетной записи SYSTEM полный контроль над ним.
  • Попробуйте описать выше также и для учетной записи администратора.
  • Библиотека comdlg32.dll повреждена.Это может произойти, если шпионское ПО или какая-либо другая вредоносная программа попытались подключиться к диалоговым окнам «Открыть файл» или «Просмотреть каталог» и поэтому изменили библиотеку lib ... в этом случае вам придется переустановить библиотеку lib ... или windows.Чтобы проверить, что библиотека в порядке, создайте ее хэш MD5 и сравните с хэшом MD5 библиотеки в рабочей системе.Они должны быть идентичны.

Ну, надеюсь, я помог.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...