Получение ошибки " The " VFPOLEDB.1' поставщик не зарегистрирован на локальном компьютере" даже после установки и регистрации поставщика

Итак, у меня есть служба Windows, которая имеет FileSystemWatcher это наблюдает за выходной папкой для некоторых файлов базы данных Visual FoxPro. И он использует VFPOLEDB.1 поставщик для чтения этих файлов. Я не могу уйти от этого провайдера, потому что он используется в производстве.

однако мне никогда не приходилось поддерживать это приложение раньше, поэтому моя коробка разработки не настроена для него. Вот мое окружение:

  • Windows 7 х64
  • Visual Studio 2005
  • .NET 2.0 служба Windows

Итак, когда я впервые начал получать ошибку, я понял, что у меня просто нет поставщика вообще, и я был прав. Итак, я загрузил и установил его отсюда.

затем я снова опустил файлы в папку, но я получил та же ошибка.

Я подумал, что это x64 машина я мог испытывать проблемы с он регистрируется, так как он, вероятно, упал в SysWOW64, и это было так, как я ожидал, поэтому я выполнил эту команду:

regsvr32 "C:WindowsSysWOW64mscomct2.ocx"

и он сказал, что он был успешно зарегистрирован (что означает ни о чем LOL), но я снова сбросил файлы - та же ошибка.

Я еще не перезагрузил свою машину, и я могу, если у кого-то есть веская причина, это проблема, но вообще говоря, если сборка зарегистрирована должным образом с regsvr32 в этом нет необходимости. Я работал с Т COM-объектов и никогда не придется перезагружаться, чтобы добраться до объекта, пока я его зарегистрировал.

кто-нибудь знает еще один шаг, который мне нужно выполнить, чтобы зарегистрировать эту вещь?

2 ответов


он зарегистрирован как положено. Это ваше приложение, которое компилируется для платформы AnyCPU.
В операционной системе x64 это создает 64-битный код, и 64-битный код не может получить доступ к 32-битным драйверам.

измените свою платформу на x86, и все будет в порядке.

редактировать
Два года спустя есть что добавить к этому ответу. Теперь с Visual Studio 2013 сыр был перемещен. Статья связана объяснить в больших деталях как были изменены настройки компилятора по умолчанию. The AnyCPU целевой процессор с Prefer 32 bit означает, что ваше приложение работает как 32-битное приложение также в операционных системах x64bit, практически не оставляя места для приложения x64, если это не требуется.

С этой новой конфигурацией также важно помнить, что опубликовано в комментариях ниже Марком Берри. Если ваше (теперь 32bit) приложение должно работать в среде IIS 64bit, вам нужно установить Application Pool С Enable 32 bit Applications


У меня есть настольное приложение (Win7 x64 VS 2015) - и продолжал получать ту же ошибку, несмотря ни на что. Я изменил целевую платформу на x86, установил MSI как admin и т. д. - сделал все, что мог, google - и не повезло. Что помогло мне установить MSI для все вместо просто меня - один из последних экранов мастера в настройках.