【发布时间】:2017-09-02 14:27:15
【问题描述】:
我在 c# .Net 4.5 中编写了一个 COM 控件,该 COM 控件使用第 3 方 dll 与 USB 设备进行通信。
在 32 位 Windows 7 上,VBScript 和 VB6 应用程序都能 100% 运行。在 Windows 7 64bit 上,调用使用 USB 设备的第 3 方 dll 函数时 VBScript 失败。
例外情况是:“System.AccessViolationException”,消息为:“尝试读取或写入受保护的内存。这通常表明其他内存已损坏。”
我不明白的是,相同的 COM 控件(和相同的 USB 驱动程序)在从 VB6 应用程序实例化时可以工作,而不是从 VBScript 实例化。
在运行 VB6 应用程序和 VBScript 时,我使用 Process Monitor 查看了加载的程序集和注册表访问,但我看不到任何异常。
关于我接下来可以排除故障或测试什么的任何建议?
【问题讨论】:
-
vb6 总是 32bit 我以为.. 结果在 64bit 上运行与否,它的 32bit。
-
是的,除非 op 实际上是指 VBA。即使没有,我认为这个问题需要更多细节,至少显示已经尝试过的内容、提出问题的相关工作示例、错误代码等。
-
尝试以
"c:\windows\syswow64\cscript.exe" myScript.vbs运行它 -
@MCND 我已经使用 Syswow64 文件夹中的 cscript 和 wscript 进行了测试,两者都产生了相同的结果,事实上,如果不是这两个中的任何一个,脚本甚至都不会运行。
-
在@MCND 建议之上,您是否以提升的权限运行它们?