Как найти 32-разрядный эквивалент пути перенаправления реестра? - PullRequest
0 голосов
/ 19 января 2020

Так что я очень хорошо знаю, что 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 предоставляет это?

...