我有一个使用标准NTSVC.ocx文件来帮助管理所有NT服务功能的VB6服务。该应用程序已在Windows2003Server RC1上顺利运行。我们的销售团队询问我们是否可以将这个相同的应用程序放在一个可以用作现场演示的笔记本上。我唯一的问题是,这款笔记本是全新的,运行的是Windows7,而制造商只有Windows7的驱动程序。
此服务没有安装程序。我手动将OCX和其他支持的dll加载到各种Windows和System32文件夹中,然后从命令提示符运行regsvr32来加载ocx。该服务具有一组命令行参数,用于安装和卸载服务本身。
当我尝试REGSVR32 OCX时,我得到了以下错误:
模块"C:\Windows\System32\ntsvc.ocx“加载失败。确保二进制文件存储在指定的路径或调试文件中,以检查二进制文件或相关.DLL文件是否存在问题。无法找到指定的模块。
发布于 2012-08-15 22:52:52
可能导致您的问题的一个潜在原因是,镜像是用固定的基地址构建的(换句话说,镜像已经被链接器与/FIXED switch绑定)。从Vista开始,Windows Loader使用Address Space Layour Randomization (ASLR) mechanism。
基于此ASLR功能,Windows Loader尝试将OCX组件加载到另一个基地址,而不是预定义的基地址( OCX镜像文件中硬编码的基地址)。由于您的OCX地址库是硬编码的,加载程序将无法加载您的OCX (从技术上讲,它只是一个DLL!)。
请参见下面的快照,其中显示了使用PeStudio的NTSVC.OCX图像的这些字段
发布于 2010-02-11 10:11:18
我会先试试Dependency walker。如果这还不能给你一个关于你需要什么的线索,你可能就是索尔。此外,您还必须以管理员身份运行regsvr32,因此您应该会看到小的UAC弹出窗口。
发布于 2010-02-28 05:18:23
这个ocx (也有其他ocx,如vbwheelscollfix.dll)注册起来非常简单。第一步:将这个OCX复制到文件夹C:\Windows\SYSWOW64 (在32位上,我怀疑它是SYSWOW32)。
第二步:使用管理员权限打开CMD。
最后一步:现在可以从SYSWOW路径注册/注销文件。
https://stackoverflow.com/questions/2241331
复制相似问题