2015-04-28 11 views
0

Краткая характеристика: Тот же .exe при запуске без прав администратора может использовать 32-битный драйвер. Однако при запуске с правами администратора он не может использовать его/найти.. Исполняемый проект .Net может использовать 32-битные драйверы только тогда, когда NOT «запускается как администратор»

Моя среда:

  • Windows 7 64bit
  • Visual Studio 2013 Professional
  • .Net 4.5
  • Компьютер не входит в домен

Фоновая история: У меня есть служба WCF, размещенная в consoleApplication, и я подключаюсь к ней WCF через net.Tcp (локально).

WCF использует для своей работы поставщик VFPOLEDB.1, который является только 32-разрядным. Все работает нормально, пока я не сделаю какую-нибудь работу администратора внутри приложения. Для этого логически требуется «Запустить как администратора», чтобы либо Visual Studio 2013 (который размещает consoleApp), либо Debug \ xxx.exe должен быть запущен в режиме «Запуск от имени администратора».

Обнаружено исключение: «VFPOLEDB.1 не зарегистрирован» (поэтому основная проблема: приложение 64 бит и поиск 64-битных драйверов) ТОЛЬКО, когда я использую запуск как администратор, я попробовал установку AnyCPU на x86 и настройку проекта на x86, и ни один имел эффект.

Вот мой вопрос:

Как я могу запустить .exe/Visual Studio 2013 в режиме администратора, но заставить его использовать драйверы 32bit.

Спасибо!

ответ

2

У меня эта проблема для MySQL DataSource, потому что ваш DataSource зарегистрирован только для вашего текущего пользователя, а не для всей машины. Когда приложение запускается как администратор, программа ищет в машинных источниках данных

Чтобы зарегистрировать свой источник данных на системной основе, откройте панель конфигурации в строке поиска ODBC.

Нажмите на кнопку «Настройка источников данных ODBC (32 бита)»

Есть две вкладки, которые Шоул вам интересны:

  • «Пользовательские источники данных» < = Вы должны найти свой DataSource там
  • «Системные источники данных» < = Вы должны зарегистрировать свой DataSource здесь

Если ваша программа компилируется в 32-битном ап d запускается как администратор, он все равно будет использовать 32-битные драйверы базы данных.

Если я неправильно понял что-то, пожалуйста, сообщите, чтобы я мог адаптировать свой ответ