2010-02-11 191 views
0

我有一个使用标准NTSVC.OCX文件,以帮助管理所有NT服务功能的VB6服务。该应用程序已在Windows 2003 Server RC1上运行,没有问题。我们的销售团队问我们是否可以将这个相同的应用程序放在可用作现场演示的笔记本上。我遇到的唯一问题是笔记本电脑是全新的,运行Windows 7,制造商只有设备的Windows 7驱动程序。NTSVC.OCX问题在Windows 7

此服务没有安装程序。我手动加载ocx并支持其他dll到各种Windows和System32文件夹中,然后从命令提示符下运行regsvr32以加载OCX。该服务具有一组命令行参数来安装和卸载服务本身。

当我尝试REGSVR32的OCX我得到以下错误:

模块 “C:\ WINDOWS \ SYSTEM32 \ NTSVC.OCX” 加载失败。确保二进制文件存储在指定路径或调试,以检查二进制文件或相关.DLL文件的问题。指定的模块无法找到。

回答

0

我先试试Dependency walker。如果这不能让你知道你需要什么,你可能是SOL。你也必须以管理员身份运行regsvr32,这样你才能得到小UAC弹出窗口。

0

此OCX(一个还其它的OCX如vbwheelscollfix.dll)注册IST非常容易。 第一步: 将此OCX复制到文件夹C:\ Windows \ SYSWOW64(在32位上,我怀疑它的SYSWOW32)。

第二步: 具有管理权限打开CMD。

最后一步: 现在你可以注册/注销从SYSWOW路径的文件。

0

可能导致您的问题的一个潜在原因是NTSVC.OCX使用固定的基地址(换句话说,图像已被链接器与/FIXED switch绑定)构建。从Vista开始,Windows加载程序使用Address Space Layour Randomization (ASLR) mechanism

基于此ASLR功能,Windows Loader会尝试在另一个基地址加载OCX组件,而不是预定义的OCX组件(OCX图像文件中的一个硬编码)。由于你的OCX地址库是硬编码的,所以装载器将无法加载你的OCX(这在技术上只是一个DLL!)。

见快照下面使用PeStudio表示NTSVC.OCX图像的这些字段:在管理壳 :

​​

0

作为ICH所述 REGSVR32 C:\的Windows \ SYSWOW64 \ NTSVC.OCX为我工作。请注意\ System32没有工作,因为它给了我一个错误。不过,它可能在x86环境中工作。

我现在已经没有错误在我的项目,但如果它工作正常,没有尝试。