как зарегистрировать компонент activeX (.dll) в 64-битной ОС - PullRequest
2 голосов
/ 23 февраля 2012

Я создаю элемент управления ActiveX (.dll), используя пользовательский элемент управления, и регистрируюсь как компонент COM. это работает нормально в 32-битной ОС. но при регистрации того же элемента управления ActiveX в 64-разрядной ОС (Windows Server 2008) он выдает следующее исключение

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-битной ОС?

Я хочу установить этот ActiveX в 64-битных программных файлах. Я установил мое приложение winform в качестве установки 64-битной. Т.е. эта установка будет установлена ​​на 64-битной платформе. потому что я использовал один файл path.gcon для работы с моим приложением, когда мой activeX загружен, он берет путь к базе данных из пути установки моего приложения из реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ APPLICATION_NAME \ LOCATION, а затем из этого места прочитайте файл path.gcon затем запустите элемент управления ActiveX

когда я регистрирую activeX как платформу x86, он успешно регистрируется и сохраняется в узле HKEY_CLASSES_ROOT \ wow6432Node. path.gcon не может прочитать в элементе управления ActiveX. Как зарегистрировать элемент управления ActiveX на платформе x64?

1 Ответ

1 голос
/ 23 февраля 2012

Ваш dll 32-битный, поэтому exe должен работать в 32-битном режиме. В 64-битной Windows .NET exe с платформой AnyCPU работает в 64-битном режиме. В 32-битной Windows .NET exe с платформой AnyCPU работает в 32-битном режиме. Я думаю, что вы используете exe Platform AnyCPU, перекомпилируйте его в Platform x86, или используйте CorFlags.exe, чтобы изменить исполняемый файл, принудительно включите 32-битный флаг.

...