В 64-битной Windows процесс определяет битность: 32 или 64.
Если вы запускаете программу в 64-битном режиме, и эта программа выполняет COM (OLEDB на основе COM),она будет искать только COM 64-битную DLL-библиотеку (на самом деле она использует только 64-битную сторону реестра, когда зарегистрированы 64-битные компоненты COM).
Если вы запускаете программу в 32-битном режимеи эта программа делает COM, она будет искать только 32-битную DLL библиотеки COM.
Теперь это может зависеть от версии компилятора C #, но сегодня большинство программ на C # настроены для компиляции как «Any Cpu».Это означает, что они будут работать как 32 в 32-битной ОС и 64 в 64-битной ОС, что делает вещи довольно сложными, если они используют COM прямо или косвенно (иногда вы даже не знаете, что используете COM!).
Итак ... чтобы подвести итог:
1) определяет битность вашего процесса (легко с помощью диспетчера задач, 32-битные процессы на 64-битной машине имеют суффикс "*32 ").
2) установите соответствующие драйверы COM OLEDB.
Если драйверы OLEDB не существуют в 64-разрядном режиме, вам придется перекомпилировать C # .EXE илизалатать его, чтобы форсировать 32-битный режим.Для этого вы можете использовать инструмент CORFLAGS .