【发布时间】:2013-03-11 09:20:53
【问题描述】:
我正在创建一个 Windows 服务。此服务必须每天从 Advantage 数据库中读取一次数据。
我在我的计算机上复制了 Advantage 数据库,它工作正常,但是当我在服务器上尝试该服务时,出现以下错误:
“AdsException:错误 6082:加载 Advantage 本地服务器库时出错。”
根据文档 (link),我必须将 ADSLOC32.DLL 放在 \WINDOWS\SYSTEM 目录中。
我尝试过,但它不起作用。
有什么想法吗?
编辑:我创建了一个控制台应用程序,它执行与我的 Windows 服务完全相同的代码,并且它的工作方式与它应该的完全一样。看来问题出在我的服务上,但不知道是我的服务哪一部分出了问题……
编辑 2:我检查了进程监视器,我的服务没有尝试加载 adsloc32.dll,它尝试加载 adsloc64.dll。我没有找到 adsloc64.dll 文件,所以我将 adsloc32.dll 复制到我的应用程序目录并将其命名为 adsloc64.dll 但它不起作用。
【问题讨论】:
-
对于 32 位 DLL,您应该始终使用 System32(32 位系统)或 SysWOW64(在 64 位系统上)而不是 System(旧的 16 位 Windows 目录)。该文档在这方面是不正确的。 msdn.microsoft.com/en-us/library/7d83bc18(v=vs.80).aspx
-
好吧,Windows 仍然搜索 16 位目录,但只是为了向后兼容。见此链接:msdn.microsoft.com/en-us/library/windows/desktop/…
-
System32 和 SysWow64 中已经有一个 adsloc32.dll 文件。我尝试将该文件放入我的应用程序目录,但它仍然不起作用。
标签: c# .net advantage-database-server