У меня есть приложение .NET 3.5, которое всегда работает на x86 (XP). Теперь мне нужна эта программа для работы на x64 (Win7). Сборка для этого приложения - любой процессор, поэтому он должен работать на x64. В моем проекте настройки> Редактор реестра Я создаю раздел реестра AppPath в HKEY_LOCAL_MACHINE \ Software \ Company \ Product \ AppPath.Развертывание приложения для любого процессора. Чтение реестра HKLM
На 64 битной машине мой проект установки устанавливает этот ключ в HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Компания \ Продукт \ AppPath
Мой первый вопрос, если я изменю TargetPlatform моего проекта установки для x64 почему реестр ключи добавляются в подсистему Wow6432Node? Если я правильно понял таргетинг, x64 должен установить ключи в реестре x64, а не подсистему Wow6432Node. Очевидно, я не сделал все, что нужно для установки x64. Что я могу пропустить, это приведет к установке программы, как если бы она была 32-разрядной, хотя в проекте установки есть целевая платформа x64?
Мой второй вопрос, если у меня есть код, который читает реестра следующим образом:
clientPbDir = Registry.LocalMachine.OpenSubKey("Software\\Company\\Product").GetValue("AppPath").ToString();
Как я могу сделать эту работу для x86 и x64?
Эта статья ответит на вопрос.
Reading the registry and Wow6432Node key
Но я предпочел бы не скомпилировать мой проект как x86 только, чтобы быть в состоянии прочитать реестр на x86 и x64, если я могу избежать этого. Я хочу иметь максимальную производительность x64.