Так что я очень хорошо знаю, что Windows автоматически перенаправляет определенные пути реестра, поэтому, если я пытаюсь создать этот путь в 32-разрядном приложении ...
Software\Example
на 64- битовая машина станет
Software\WOW6432Node\Example
Я также знаю, что при открытии ключа можно установить точное представление реестра для использования независимо от архитектуры конкретного приложения, например, с помощью C# 's RegistryView enum. Вот пример использования.
var baseKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
Однако, что я хотел бы сделать, это посмотреть, каким будет 64-битный эквивалентный путь, если я создаю ключ в 32-битном приложении, и наоборот. Итак, без фактического создания ключа - просто с некоторым разбором строки - go с Software\Example
до Software\WOW6432Node\Example
или наоборот.
Причина, по которой я спрашиваю, заключается в том, что я Я использую Трассировка событий для Windows, которая всегда возвращает пути с Wow6432Node независимо от архитектуры приложения. Поскольку я планирую иметь доступную 32-разрядную версию, я хочу видеть возвращаемые результаты, как это должно делать 32-разрядное приложение, и, похоже, нет способа указать это с помощью Event Tracing для Windows API. сам по себе.
Я нашел этот список ключей, перенаправленных WOW64, , но кажется, что было бы очень неудобно писать код, чтобы проверить, соответствует ли ключ одному из них, и если да, то замените его в пути ... но нет ли способа, которым Windows предоставляет это?