«Невозможно найти версию среды выполнения для запуска этого приложения» для 32-битного приложения в 64-битной Windows - PullRequest
4 голосов
/ 15 декабря 2011

Я занимаюсь разработкой 32-битного приложения WinForm (цель: .NET 3.5). Мой клиент требует, чтобы приложение было установлено в папку "Windows \ System32 \ clientname" и автоматически запускалось при запуске. Кроме того, приложение должно быть 32-битным, поэтому я не могу использовать «Любой процессор».

Я занимаюсь разработкой под Win7 x64 с VS2010, и все версии .NET установлены. Когда я запускаю приложение, я получаю сообщение «Невозможно найти версию среды выполнения для запуска этого приложения». На Win7 x86 работает без проблем. Это не само приложение, и я на 100% уверен, что все необходимые фреймворки установлены.

Я знаю, что в системе x64 эта папка не должна использоваться для 32-битных приложений, но, как я уже сказал: клиент настаивает и не будет сдвигаться с места.

Прежде чем окончательно сказать клиенту, что это невозможно, я хочу изучить все варианты. Я, конечно, гуглил и тоже искал этот замечательный сайт, но ничего особенного для моей конкретной ситуации не пришло.

Мое приложение порождает другой 32-битный процесс, расположенный в той же папке. Конечно, на x64 это тоже не сработало, но я решил это, используя «Wow64DisableWow64FsRedirection», а затем скопировав его в другое место, чтобы запустить его оттуда (что прекрасно работает). Я сделал домашнее задание, но просто не могу найти решение для запуска основного приложения под x64 и в этой конкретной папке.

Есть ли один?

1 Ответ

3 голосов
/ 19 декабря 2011

В попытке решить эту проблему я создал две папки на своем компьютере с Win7 x64:

  • C:\Windows\System32\ClientName
  • C:\Windows\SysWOW64\ClientName

Затем я создал простое x86-приложение WinForms для .NET 3.5.Я обнаружил, что если я скопировал исполняемый файл в C:\Windows\System32\ClientName, я получу точно такое же сообщение об ошибке, как вы сообщили.

Однако, если я скопировал исполняемый файл в оба каталога, я мог бы запустить его с C:\Windows\System32\ClientName, и он работал просто отлично.

Я не пробовал этого, но подозреваю, что еслиу вас есть приложение для нескольких сборок, вам нужно только скопировать файл *.exe в C:\Windows\System32\ClientName.Все остальные файлы (и EXE-файлы) будут тогда находиться в каталоге C:\Windows\SysWOW64\ClientName.

Это немного неопрятное решение, я знаю, но опять же требование вашего клиента немного необычно для запускас.

...