У меня есть неуправляемое приложение (MSACCESS.EXE), которое динамически загружает различные сборки .NET (через COM-взаимодействие).
В настоящее время неуправляемое приложение автоматически инициализирует CLR .NET 2.0 при загрузке первой сборки. Поскольку я хочу перенести (некоторые из) сборок .NET на .NET Framework 4.x, я хочу, чтобы неуправляемое приложение вместо этого загружало .NET 4.0 CLR.
Хорошо известно, что это можно сделать, предоставив неуправляемому приложению следующий файл * .exe.config :
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0.30319"/>
</startup>
</configuration>
Это работает. Тем не менее, это требует создания изменяющей установки MS Office пользователя (путем создания файла в той же папке, что и msaccess.exe), чего я хотел бы избежать, потому что (а) это требует административных разрешений и (б) это потенциально влияет на другие и несвязанные приложения на основе доступа.
Таким образом, я хотел бы установить эту supportedRuntime
конфигурацию на время выполнения , используя VBA и / или (более вероятно) вызовы API Windows.
Как изменить «настройку CLR» неуправляемого приложения во время выполнения?
Альтернативные решения, которые я попробовал и исключил: