获取错误"'VFPOLEDB.1'提供程序未在本地计算机上注册",即使在安装和注册提供程序之后

Mik*_*oud 9 c# com windows-services visual-foxpro

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

但是,我从来没有必要支持这个应用程序,所以这就是为什么我的开发盒没有设置它.这是我的环境:

  • Windows 7 x64
  • Visual Studio 2005
  • .NET 2.0 Windows服务

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

然后我继续删除文件夹中的文件,但我得到了同样的错误.

我想是因为它是一x64台机器,我可能会遇到问题,因为它可能已经被注册了,因为它可能已经被删除SysWOW64,所以我按照预期运行了,所以我运行了这个命令:

regsvr32 "C:\Windows\SysWOW64\mscomct2.ocx"
Run Code Online (Sandbox Code Playgroud)

并且它说它已成功注册(这意味着什么都没有LOL)但我再次删除文件 - 同样的错误.

我还没有重新启动我的机器,如果有人有令人信服的理由认为是问题我可以,但一般来说,如果组件已正确注册regsvr32,则没有必要.我已经使用了大量的COM对象,只要我已经注册它就不需要重新启动就可以访问该对象.

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

Ste*_*eve 27

它是应该注册的.它是为AnyCPU平台编译的应用程序.
在x64操作系统中,这会生成64位代码,64位代码无法访问32位驱动程序.

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

编辑
两年后,有一些东西可以添加到这个答案中.现在使用Visual Studio 2013,奶酪已被移动.文章链接详细解释了编译器设置默认值是如何更改的.该AnyCPU目标CPU用Prefer 32 bit,除非特别需要你的应用程序可以作为32位应用程序也x64bit操作系统离开几乎没有房间给64位应用程序的手段.

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

  • 这提醒我,要在IIS 8下运行,请将"应用程序池"设置"启用32位应用程序"更改为"True". (7认同)

avs*_*099 6

我有台式机应用程序(Win7 x64 VS 2015)-不管如何都不断出现相同的错误。我将平台目标更改为x86,以admin等身份安装了MSI-做了我能用google搜索到的所有内容-没运气。帮助我的是为所有人安装MSI,而不是仅为我安装-安装程序中最后一个向导的屏幕之一。