仅当在 Windows 7 上编译时,“New ADODB.Connection”上才会出现“无效的过程调用或参数”错误

2023-12-25

自从我在 Windows 7 中获得了一台新的开发机器以来,当我在 VB6 上编译一些遗留应用程序时,我遇到了一些问题。(我的旧机器运行在 Windows XP 上。)

如果我在我的 XP 机器上编译该项目,一切都很好。 如果我在 Windows 7 计算机上编译相同的项目,它仍然运行良好,但如果我尝试在 XP 计算机上运行它,则会出现此错误。

错误编号:5
描述:无效的过程调用或参数

感谢我的错误处理程序,我知道引发此错误的行是:

    Dim objConn As ADODB.Connection
--> Set objConn = New ADODB.Connection

我比较了两台机器上的参考资料Project - References是相同的 : (Microsoft ActiveX 数据对象 2.7 库)

什么可能导致此错误?


这是一个已知的Win7 SP1 的问题 http://connect.microsoft.com/VisualStudio/feedback/details/646313/ado-programs-no-longer-work-on-customer-computers-after-recompiled-on-a-windows-7-sp1-machine这将在 SP2 中修复。

SP1中处理该问题的方法是将旧的ADO typelib文件从Win7 RTM复制到C:\Program Files (x86)\Common Files\System\ado并在那里注册。

正如许多论坛主题所表明的那样,注册这个旧的 ADO 类型库并不是一项简单的任务。这是我们在商店中用来修复 ADO typelib 问题的批处理文件:

@echo off
set regtlib="%windir%\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe"
set subinacl="%~dp0subinacl.exe"
set target_dir=%CommonProgramFiles%\System\ado
if not "%CommonProgramFiles(x86)%"=="" set target_dir=%CommonProgramFiles(x86)%\System\ado

copy "%~dp0msado28_old.tlb" "%target_dir%\msado28_old.tlb" > nul
%subinacl% /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C} /setowner=Administrators > nul
%subinacl% /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C} /grant=Administrators=F > nul
%subinacl% /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C} /setowner=Administrators > nul
%subinacl% /subkeyreg HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C} /grant=Administrators=F > nul
%regtlib% -u "%target_dir%\msado28.tlb"
%regtlib% "%target_dir%\msado28_old.tlb"

你两者都需要msado28_old.tlb http://dl.unicontsoft.com/upload/msado28_old.zip and 放置在与install.bat文件和 .NET Framework 4.0 设置regtlibv12.exe公用事业。

现在,您可以在 Win7 机器上重新编译引用 ADO 的项目,而不会在以前版本的 Windows 上出现兼容性问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅当在 Windows 7 上编译时,“New ADODB.Connection”上才会出现“无效的过程调用或参数”错误 的相关文章

  • 为应用程序创建自定义 odbc 驱动程序

    好的 我有一个简单的数据库引擎 它是用 vb6 编写的专有产品 用于我的一个应用程序 我想为它创建一个 ODBC 驱动程序 这样我就可以将我的一些其他应用程序 需要数据库 与我的数据库引擎而不是 microsoft sql 他们当前正在使用
  • 在 VB6 中什么时候必须将变量设置为“Nothing”?

    在我的一个 VB6 表单中 我创建了几个其他 Form 对象并将它们存储在成员变量中 Private m frm1 as MyForm Private m frm2 as MyForm Later Set m frm1 New MyForm
  • vb.net 的 file.shortpath

    我正在将我的项目从 vb6 转换为 vb net vb net中有shortpath的模拟方法吗 Dim DestinationFile As Scripting File DestinationFile ShortPath Thanks
  • 在 Eclipse IDE 上使用 VBA [重复]

    这个问题在这里已经有答案了 可能的重复 有没有便宜或免费的 VB6 编程 IDE https stackoverflow com questions 1766514 any cheap or free ides out there for
  • 从 VB6 和 C# 调用 DLL 给出的双精度结果略有不同

    我在 DLL 中有一个专有库 我没有代码 该库已在 VB6 中使用多年 我正在尝试将VB6代码升级到C 并希望使C 代码完全复制VB6的行为 当从每个环境调用时 我无法使 DLL 中完成的某些计算的双精度结果完全匹配 在 VB6 中 我有类
  • 在 VB6 中的打印机上进行 Unicode 打印

    我正在尝试在打印机 实际上是 PDFCreator 上打印 Unicode 中文 字符串 但我得到的只是字符的垂直打印 我用TextOutW函数导入自gdi32 dll TextOutW dest hDC x y StrConv szTex
  • 如何在 .NET 中操作 VB6 集合?

    我目前正在为 NET 软件设计一个接口 该接口将由 COM 对象 特别是 VB6 使用 虽然我找到了 Microsoft 的许多页面 详细介绍了如何创建 COM 互操作接口 但我目前在设计时对 Collections 的使用感到困惑 我希望
  • ReDim 在 VB6 中保留为多维数组

    我正在使用 VB6 我需要做一个ReDim Preserve到多维数组 Dim n m As Integer n 1 m 0 Dim arrCity As String ReDim arrCity n m n n 1 m m 1 ReDim
  • RS 232 中断信号

    我有一个RS232信号捕获设备 而且效果很好 我需要一些帮助来理解数据 基本上我们购买它是因为我们正在处理 80 年代末使用串行通信的机器控制器 尽管知道端口参数 但我们运气不佳 从我转储的数据来看 机器控制正在使用中断信号作为其协议的一部
  • VB6 - Lua 集成

    我想知道是否有人有任何集成 Lua 和 VB6 的技巧 我正在运行一个小型在线角色扮演游戏 添加一些脚本会很棒 嗯 这是可行的 我曾经为 Lua 5 0 2 做过 但找不到文件 在您拥有的选项中 您可以 将 Lua 封装在公开 Lua AP
  • 在 C# 中使用 VB6 字符串数组

    我有 旧的 VB6 代码 我想从 C 代码中使用它 这有点类似于这个问题 https stackoverflow com questions 23507416 passing string array from vb6 to c net 但
  • 如何将exe异常路由回VB6应用程序?

    我有一个 vb6 应用程序 它将调用 mencoder exe 它是 mplayer 的一部分 用于将某些文件转换为 flv 格式 每当我尝试转换这个 opendivx 文件时 我都会从 mencoder 收到这个奇怪的未处理异常问题 目前
  • 需要从 DCOM 配置中删除对象 (DCOMCNFG)

    我们有一个带有 activex exe 和 com dll 的应用程序 安装后 我们会在 DCOM 配置中创建一个对象 如果我们尝试从 DCOM 配置中删除该对象 它就会关闭 直到我们再次重新打开它 想知道是否有任何程序可以从 DCOM 及
  • 使用 ASP 将参数传递给存储过程

    我正在尝试将一些参数传递给经典 ASP 中的 SQL 存储过程 我看过几篇关于此的帖子 不确定我做错了什么 因为我似乎没有看到我的差异 set conn CreateObject ADODB Connection conn open DSN
  • ASP.NET MVC 中的经典 ASP (C#)

    我有一个应用程序想要 最终 转换为 ASP NET MVC 我想要进行全面的服务升级 到 ASP NET 但想要使用当前的 ASP 内容来运行当前的功能 这样我就可以在对新框架进行增量升级的同时升级小部分 该站点严重依赖于不太成熟的 VB6
  • ReDim 保留“下标超出范围”

    我正在尝试将数据从 2 个双精度数组移动到 2 个不同的双精度数组 我不确定大小是多少 因为我正在从第一个数组中随机抽取样本并将其放入第二个数组中 当我添加 ReDim Preserve 行时 出现下标超出范围错误 Function Cre
  • 如何使用 VB6 调用 Windows shell 命令?

    究竟如何使用 VB6 才能像从命令行一样调用任何 Windows shell 命令 例如 一些微不足道的事情 echo foo 操作方法如下 Shell cmd echo foo vbNormalFocus
  • 寻找示例项目和“如何创建”VB6 Activex EXE

    我正在学习如何创建 VB6 Active X EXE 我需要为许多 VB6 应用程序添加 打电话回家 到服务器的功能 我想集中此功能 但不想使用 DLL 来实现 因为我只想需要防火墙权限one程序 phone home ActiveX EX
  • CURL 相当于使用 VBA 的 POST JSON 数据

    我知道这与之前提出的一些问题类似 但有些东西仍然对我不起作用 如何执行以下命令 curl X POST data statements json H Content Type application json user username p
  • 具有多个图像列表和图标/图像的列表视图

    我需要一种在列表视图上使用两个图像列表的方法 其中一个图像列表用于包含 16x16 图标的标题图标 另一个图像列表将在子项目中包含 32x32 缩略图 下图显示了我正在尝试做什么 我找到了解决这个问题的技巧 诀窍是在 32x32 画布上创建

随机推荐