.Net 项目可执行文件只有在 NOT "run as administrator" 时才能使用 32 位驱动程序

.Net project executable can use 32 bit drivers only when NOT "run as administrator"

简短描述: Same .exe when 运行 没有管理员权限可以使用32位驱动程序。但是,当 运行 具有管理员权限时,它无法使用 it/find 它。

我的环境:

背景故事: 我在 consoleApplication 中托管了一个 WCF 服务,我通过 WCF 通过 net.Tcp(本地)连接到它。

WCF 使用只有 32 位的 VFPOLEDB.1 提供程序来工作。一切正常,直到我在应用程序中进行一些管理工作。逻辑上需要 "Run As Administrator" 才能执行此操作,因此 Visual Studio 2013(托管 consoleApp)或 Debug\xxx.exe 必须在 "Run As Administrator" 模式下为 运行。

捕获异常说 "VFPOLEDB.1 is not registered"(所以主要问题:应用程序是 64 位并且正在寻找 64 位驱动程序)仅当我使用 运行 作为管理员时,我尝试将 AnyCPU 设置为 x86 并将项目设置为 x86 none 产生了影响。

这是我的问题:

如何运行 .exe/visual Studio 2013 在管理员模式下强制使用 32 位驱动程序。

谢谢!

我遇到了 MySQL DataSource 的问题,那是因为您的 DataSource 仅针对您当前的用户注册,而不是针对计算机范围。当应用程序 运行 作为管理员时,程序正在查找机器范围的数据源

要在系统范围内注册您的数据源,请打开您的配置面板,在搜索栏中键入 ODBC。

点击"configure ODBC Data Sources (32bit)"

您应该对两个选项卡感兴趣:

  • "User Data Sources" <= 你应该在那里找到你的数据源
  • "System Data Sources" <= 你应该在这里注册你的数据源

如果您的程序是用 32 位编译的并且是 运行 管理员,它仍然会使用 32 位数据库驱动程序。

如果我误解了什么,请告诉我,以便我调整我的答案