我目前正在 Windows XP 64 位机器上安装我的产品。我正在尝试将我的 COM 模块注册为安装的一部分。我通过在“RunOnce”(注册表)键中添加一个条目来启动一个 bat 文件并从该 bat 文件完成注册。
我的所有 COM dll 均已正确注册,但其中两个 COM 服务器 (.exe) 显示错误,即无法加载其依赖项 dll 之一。但是同一个 dll 与另一个 COM 服务器静态链接,并且该服务器注册成功!
令人惊讶的是,直接运行相同的 bat 文件(双击它)不会产生任何错误,并且它适用于所有程序集!我已经在我的几台测试机器中检查了这一点,只有显示这种行为的机器。不幸的是,那不是客户工具机。
它不是依赖 dll 不可用的问题。因为在通过直接运行bat文件注册了所有文件后,我可以通过手动在RunOnce中添加一个键并重新启动机器来再次重现这一点。
附加信息,我正在通过 logmein 远程访问这台机器。
确切的错误消息:“此应用程序无法启动,因为找不到 XXX.dll。重新安装应用程序可能会解决此问题”。
此 XXX.dll 在同一路径中不可用,但在另一个文件夹中,并且其路径在路径变量中可用。
bat文件内容是;
"C:\WINDOWS\system32\regsvr32.exe" RemoteControlHandler.dll
"C:\WINDOWS\system32\regsvr32.exe" ProcPgmHandler.dll
"C:\WINDOWS\system32\regsvr32.exe" GEM300Handler.dll
"C:\WINDOWS\system32\regsvr32.exe" ICEScreenAdapter.ocx
HIB.exe /regserver //抛出错误
JobManager.exe /regserver
Cim300Adapter.exe /regserver
GemEquipmentCtrl.exe /regserver //抛出错误
希望这些信息对专家来说已经足够了,如果您需要任何其他信息,请随时询问。
尼克松