Доступ к реестру - Win7 "Любой процессор" против x86 - PullRequest
0 голосов
/ 05 октября 2011

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

У нас есть пользовательский загрузчик приложений (встроенный в .net), который загружает все соответствующие исходные файлы и регистрирует / отменяет регистрацию dll, которые являются COM, и запускает RegASM для некоторых сборок. У нас были проблемы с загрузчиком под windows 7 (x64), который он должен был исправить.

Единственное, что сделал человек, которому поручено решить эту проблему, - это попросить, чтобы загрузчик был собран как x86, а не «Любой ЦП». У нас возникли проблемы с просмотром, как это могло исправить все

Ранее у нас были ошибки регистрации COM и ошибки «Запрашиваемый доступ к реестру не разрешен» при попытке создания файлов TLB с помощью RegASM. Кто-нибудь знает, как его изменение могло повлиять на это вообще?

1 Ответ

2 голосов
/ 05 октября 2011

Ваше исправление коллег было правильнымВот почему:

В Windows x64 процесс может быть запущен как 32-битный или 64-битный процесс.64-битный процесс может загружать только 64-битные библиотеки, а 32-битный процесс - только 32-битные библиотеки.

Если для вашей платформы (например, указанной в свойствах проекта) вашего приложения .NET установлено значение «Любой ЦП», промежуточный кодбудет скомпилирован в 32-битный или 64-битный код в зависимости от целевой платформы, т.е. в 64-битной системе будет сгенерирован 64-битный код.Как следствие, любая 32-разрядная библиотека, такая как собственные 32-разрядные компоненты COM, не может быть загружена в 64-разрядный процесс.

...