13

好的,所以我有一个 Windows 服务,它有一个FileSystemWatcher监视一些 Visual FoxPro 数据库文件的输出文件夹。它利用VFPOLEDB.1提供者来读取这些文件。我不能离开这个提供商,因为它正在生产中使用。

但是,我以前从未支持过这个应用程序,所以这就是为什么我的开发箱没有为它设置。这是我的环境:

  • 视窗 7 x64
  • 视觉工作室 2005
  • .NET 2.0 Windows 服务

所以,当我第一次开始收到错误时,我认为我根本没有提供程序,我是对的。所以,我从这里下载并安装了它。

然后我再次将文件放入文件夹中,但我得到了同样的错误。

我想是因为它是一x64台机器,我可能在注册时遇到问题,因为它可能被放入SysWOW64,并且正如我预期的那样,所以我运行了这个命令:

regsvr32 "C:\Windows\SysWOW64\mscomct2.ocx"

它说它已成功注册(这意味着没什么大笑)但我再次将文件放入 -同样的错误。

我还没有重新启动我的机器,如果有人有令人信服的理由,我可以重新启动,但一般来说,如果程序集已正确注册regsvr32,则没有必要。我已经使用了大量的 COM 对象,只要我已经注册了它,就不必重新启动才能访问该对象。

有人知道我需要执行的另一个步骤来注册这个东西吗?

4

4 回答 4

33

它已按应有的方式注册。为 AnyCPU 平台编译的是您的应用程序。
在 x64 操作系统中,这会产生 64 位代码,而 64 位代码无法访问 32 位驱动程序。

将您的平台更改为 x86,您会没事的。

编辑
两年后,这个答案有一些补充。现在有了 Visual Studio 2013,奶酪已经被移动了。链接的文章详细解释了编译器设置默认值是如何更改的。AnyCPU目标 CPU意味着您的Prefer 32 bit应用程序也可以在 x64 位操作系统中作为 32 位应用程序工作,除非特别需要,否则几乎没有空间给 x64 应用程序。

有了这种新配置,记住 Mark Berry 在下面的评论中发布的内容也变得很重要。如果您的(现在是 32 位)应用程序需要在 IIS 64 位环境中工作,您需要设置Application PoolwithEnable 32 bit Applications

于 2013-03-28T14:41:58.733 回答
7

我有桌面应用程序(Win7 x64 VS 2015) - 无论如何都会遇到相同的错误。我将平台目标更改为 x86,以管理员身份安装 MSI 等——尽我所能谷歌搜索——但没有运气。帮助我的是为所有人而不是为安装 MSI - 安装程序中最后一个向导的屏幕之一。

于 2016-04-19T21:48:40.627 回答
0

我也有同样的问题。

VFP Ole DB Provider在我的系统中安装并解决了。

下载链接

于 2020-10-30T06:03:59.370 回答
0

使用Advantage OLE DB Provider,适用于 32 或 64,这里是连接字符串

于 2020-11-07T14:07:24.100 回答