KEY_WOW64_32KEY и KEY_WOW64_64KEY

Помимо справки MSDN, я хочу знать, что делают эти клавиши? Означает ли KEY_WOW64_32KEY, что 32-разрядное приложение в ОС x64 получит доступ к дереву реестра WOW64? И означает ли KEY_WOW64_64KEY, что 32-разрядное приложение в ОС x64 будет получать доступ к обычному дереву реестра, а не к дереву реестра WOW64? Что делать, если мне нужно получить доступ к некоторым ключам, которые я не знаю, находятся ли они в WOW64 или в обычном дереве реестра?


person Community    schedule 09.10.2012    source источник


Ответы (2)


  • KEY_WOW64_64KEY в 64-битной ОС означает, что доступ к реестру, независимо от того, 32-битный это или 64-битный процесс, будет иметь доступ к 64-битному представлению реестра.

  • KEY_WOW64_32KEY в 64-битной ОС означает, что доступ к реестру, независимо от того, 32-битный это или 64-битный процесс, будет иметь доступ к 32-битному представлению реестра.

  • Ни один из них не влияет на 32-битную ОС.

  • Если этот флаг не установлен (по умолчанию) в 64-разрядной ОС, доступ к реестру будет отправлен из 32-разрядных процессов в 32-разрядное представление реестра, а доступ из 64-разрядных процессов — в 64-разрядное представление реестра.

Дополнительные сведения см. на этой справочной странице Microsoft. должен рассказать всю историю.

person Joachim Isaksson    schedule 09.10.2012
comment
Согласно предоставленной вами ссылке, RegDeleteKey нельзя использовать для доступа к альтернативному кусту реестра. Что, если платформа = x64, приложение = x86, RegOpenKeyEx с samDesired как KEY_WOW64_64KEY и я передам дескриптор открытого 64Key в RegDeleteKey, удалит ли он тогда указанный ключ? - person ; 09.10.2012
comment
@user1696837 user1696837 Да, если у вас уже открыт HKEY для 64-битного реестра, RegDeleteKey будет работать (пока). Если это гарантированно будет иметь место в будущем, я не знаю, рекомендуемым способом определенно будет RegDeleteKeyEx с флагом KEY_WOW64_64KEY. - person Joachim Isaksson; 09.10.2012

Из связанной ссылки:

Дополнительные сведения см. в разделе Доступ к Альтернативный вид реестра.

Что говорит:

  • KEY_WOW64_64KEY: доступ к 64-битному ключу из 32-битного или 64-битного приложения.

  • KEY_WOW64_32KEY: доступ к 32-битному ключу из 32-битного или 64-битного приложения.

person lunixbochs    schedule 09.10.2012
comment
Согласно предоставленной вами ссылке, RegDeleteKey нельзя использовать для доступа к альтернативному кусту реестра. Что, если платформа = x64, приложение = x86, RegOpenKeyEx с samDesired как KEY_WOW64_64KEY и я передам дескриптор открытого 64Key в RegDeleteKey, удалит ли он тогда указанный ключ? - person ; 09.10.2012