Перенаправление реестра в 64-битной Windows - PullRequest
3 голосов
/ 21 ноября 2011

Я использую 64-разрядную версию Windows и хочу создать раздел реестра HKCU\Software\Classes\Wow6432Node\CLSID\{myguid}\InprocServer32 с использованием C #.

Какой раздел реестра мне нужно написать, чтобы он был перенаправлен на указанный выше ключ? Это также должно работать на 32-битной Windows.

Я компилирую свое приложение для x86.

Ответы [ 4 ]

9 голосов
/ 21 ноября 2011

Если вы используете .net 4, вы должны использовать перечисление RegistryView.Пройдите RegistryView.Registry32 при звонке OpenBaseKey.Используйте HKCU\Software\Classes\CLSID{myguid}\InprocServer32 в качестве ключа и пусть редиректор сделает всю работу.

Если вы используете более старую версию .net, то, я боюсь, вам понадобится p / вызвать собственный Win32 API.

Если вы нацелены на x86, вам не нужно ничего делать.Перенаправитель реестра сделает все правильно и перенаправит ваш доступ к реестру в 32-битное представление реестра.Вам нужно только выполнить описанные выше шаги из 64-битного процесса.

2 голосов
/ 21 ноября 2011

Поскольку вы нацелены на x86, простое использование HKCU\Software\Classes\CLSID\{myguid}\InprocServer32 будет работать на всех платформах.

2 голосов
/ 21 ноября 2011

64-битные версии Windows эмулируют 32-битную функциональность через подсистему «Windows on Windows» (WoW).

В случае реестра они перемещают 32-битные ключи в специальныеподключ для совместимости.Он автоматически перенаправит 32-битные операции реестра в HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node.Более подробную информацию можно найти в разделе MSDN о перенаправителе реестра .

. Вы можете использовать перечисление RegistryView в RegistryKey.OpenBaseKey, чтобы открыть 32-разрядную версию.просмотреть явно и получить доступ к HKCU\Software\Classes\CLSID{myguid}\InprocServer32 напрямую.Это автоматически получит доступ к узлу WOW64 в 64-битных системах и к обычному ключу в 32-битных системах.

1 голос
/ 21 ноября 2011

По умолчанию ваше приложение C # компилируется с использованием «Любого ЦП» (это значение по умолчанию - это означает, что ваша программа будет работать как x86 exe на компьютере x86 и x64 на машинах x64).Что вы хотите сделать, это изменить настройку на Win32.Теперь ваша программа всегда будет работать как x86 exe, поэтому она будет автоматически перенаправлена ​​окнами WOW6432Node.Когда вы получаете доступ к HKCU \ Software \ Classes \ CLSID {myguid} \ InprocServer32 на компьютере x64, вы будете перенаправлены на нужный ключ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...