2012-02-23 137 views
2

我使用用戶控件&寄存器作爲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

回答

1

你的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位標誌。

相關問題