gpt4 book ai didi

c# - .NET/VB6 应用程序在 Windows 7 上失败

转载 作者:太空宇宙 更新时间:2023-11-03 20:38:11 25 4
gpt4 key购买 nike

我有一个 .NET 3.5 winforms 应用程序调用 VB6 ActiveX DLL 中的一个方法,这会弹出一个对话框。在将近 10 年的时间里,一切都运行良好(首先作为 .NET 1.1 应用程序,然后是 2.0,然后是 3.5,所有这些都在 Windows XP 上)。现在客户已升级到 Windows 7,我遇到了 System.AccessViolationException:尝试读取或写入 protected 内存。这通常表明其他内存已损坏。

调用的结构是这样的:

.NET 代码

try {
VB6Object obj = new VB6Object();
obj.DoStuff();
}
catch (Exception ex) { // handle }

VB6Object 类中的 VB6 代码

Public Sub DoStuff()
on error goto errHandle
RetrieveData();

Call frmPopup.Show(vbModal)

exitPoint:
exit sub
errHandle:
' handle error
End Sub

问题始于 VB6 代码这一行:Call frmPopup.Show(vbModal)。错误传播到我处理错误的 .NET 代码(VB6 代码中的错误处理程序被完全忽略)。我认为问题可能出在 frmPopup 的 Load 事件上,但代码永远不会到达 Load 事件(我到处都有跟踪语句,所以我就是这么知道的)。

有趣的是,我第二次调用电话时,它根本没有失败,但表格缺少第 3 方网格(ActiveX DevExpress Quantum Grid),所以我假设网格可能不兼容以某种方式与 Windows 7 一起使用。

当我简单地将应用程序作为 EXE 或从 VS2008 IDE 运行时,我所描述的一切都会发生,因此 VB6 ActiveX DLL 只是一个引用。如果我使用 COM 间接寻址并在 IDE 中运行 VB6 代码,则一切正常。

我试过以管理员身份运行,但没有任何改变。

接下来我可以去哪里解决这个问题?

最佳答案

关闭 DEP。较旧的 Ax 控件倾向于使用时髦的子类化 thunk(ATL/MFC 除外),没有人愿意将 NX 标志设置为关闭。

关于c# - .NET/VB6 应用程序在 Windows 7 上失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4221214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com