如何在64位操作系统中注册activeX组件(.dll)

问题描述:

我使用用户控件&寄存器作为COM组件创建ActiveX控件(.dll)。它在32位操作系统中工作正常。但寄存器在64位操作系统(窗口服务器2008)它引发相同的ActiveX控件时以下异常如何在64位操作系统中注册activeX组件(.dll)

Could not load file or assembly 'file :////C:\Program Files\STPL\GlobActiveX.dll' or one of its dependencies. an attempt was made to load a program with an incorrect format. 

我已经使用以下代码来注册DLL组件

filepath=C:\Program Files \STPL\GlobActiveX.dll 
      Assembly asm = Assembly.LoadFrom(filePath); 
      RegistrationServices regAsm = new RegistrationServices(); 
      bool bResult = regAsm.RegisterAssembly(asm, AssemblyRegistrationFlags.SetCodeBase); 

如何注册ActiveX组件(.dll)在64位操作系统?

我想在64位程序files.I安装我的winform应用程序作为安装64 bit.i.e此安装程序将安装在64位平台。因为我已经使用了一个path.gcon文件来处理我的应用程序,当我的activeX被加载时,然后从注册表HKEY_LOCAL_MACHINE \ SOFTWARE \ APPLICATION_NAME \ LOCATION的我的应用程序安装路径中取得databse路径,然后从这个位置读取path.gcon文件然后启动activeX控件

当我注册了activeX作为x86平台,然后它成功注册到&存储到HKEY_CLASSES_ROOT \ wow6432Node。 path.gcon无法在activeX控件中读取。 如何在x64平台上注册ActiveX控件?

+0

“程序文件”后真的有空吗?如果是这样,它可能不应该在那里。 – 2012-02-23 04:41:16

+0

Program Files后面没有空格 – user847455 2012-02-23 04:43:14

你的DLL是32位,所以EXE必须以32位模式运行。 在64位Windows中,使用Platform AnyCPU的.NET exe以64位模式运行。 在32位Windows中,使用Platform AnyCPU的.NET exe以32位模式运行。 我认为你的主机exe是平台AnyCPU,重新编译到平台x86, 或使用CorFlags.exe来更改exe,强制32位标志。