AppCompat.

???????? «AppCompat», ??????????? ? ???? ????????? ?? ????? ?????? ??? Wow64, ?????????? ????????? ?????. ???? ????? - ????????. ?????? – ??????? ????????. ?????????? ??? ?? «application compatibility» - ?.?. ????????????? OS ? ????????????, ??? ?? - «???????? ?????????????».

?????? ????????? ?? ??????, ??? ??? ?????????????, - ??? ?????? ??? ????????????? ???????????? ??????? ???????. ??? ???????????? OS ??? ????????????? ???? ?????. ??????, ??????????? ?? ?????? ? ????????? ???????????? ?????????? ??? ??? ???? ??????? Win32. ??? ?? ???????, ??? ???????? ????? ????, ??? ??????????? ??????? ??? ????? ? ????? ??????? ? ??????????? ????? ????? ???? ??????-??????? ? ???????????? ?????? ???????? ?? ???? ?? ???????? ?????? ?? Gov Maharaj, ??? ??? ??????????? ?????? ?? ??? ???? ??????????. ??? ???? – ?????? ????? ??????????, ??????? ?????????? ????????? ??????????. ??, ??? ?????????? ???? ????????? ??? ? ????????? ???? ???????. ??, ??? ??????? ?? ?????? ???? ????????. ?? ???????? – ?????? ???? ????, ???????. ??????, ???????, ? ????????, OS ?????? ????????? ???, ? ?????????? ???????? ?????? ?????.

? ??? ?????? ????????? ????????? ?????, ????????? ???????? ????????????? ??????? ? ???????? ?????? ??? Windows 7:

  1. ????? ???? ??????? ??????? RegEnableReflectionKey ? ????????, ????? ??? ?? ?????? ??????, ?????? ????????? ERROR_SUCCESS. ?????????? ??????, ??? ? ?? ????? ?????? ???????, ???? ???? ?? ??????????. ????, ??? ?? ?????, ????????? ???????? ??? ???????? ? ??????????? ???????? ? ??????, ???? ??????? ?????????? ??????.
  2. ????? ????????? ?????????, ????? ? ???? ?????????? ?????? ????????? ??????? ???? ? ????? ????? «HKEY_LOCAL_MACHINE\Software\Wow6432Node». ???????? ??????? ??????? ??????????.
  3. ???????????? ?????? ????????? Registry Value Redirection (?????? «%ProgramFiles%» ?? «%ProgramFiles(x86)%») ???????????? ?????????????? ? ???????? ????????? ?????. ????? ??? ???? ???????? ? ?????????? ??????????, ??? ????????? ?????? ?????????? ?????????? ?????? ??????? ???????? ?, ??? ?????, ??????? ???????????????. ? ??? ?????? ??????????????? ?????????? «??? ????????» ??? ????? ?????? ??????????.
  4. ????? ???? ???????? ??? ????? KEY_WOW64_32KEY ? KEY_WOW64_64KEY ??? ?????? RegCreateKeyEx. ????? ? ?????? – ?? ???????. ?? ????????? ????? ?????????, ????? ??????? ?????? ?????????? ??????. ? ???????, ? ???? ?????? ???? ????? ????????? ???? ??????????.
  5. ? ???? ?? ????? ?????????? ??????, ??????????, ??? ??????? RegCeateKeyEx ? RegOpenKeyEx ?? ??????? ????????? ?? ??????? ???? ? ????? ?????. ? ??????????? ?? ?????? OS, ??????????? ??????????, ?????????? ?????? KEY_WOW64_XXX ? ????? ???????, ??? ?????????? ????, ????? ???? ???????? ?????? ?????????. ? ?????????, ? ???????, ????? ??? ???? ??????????, ???? ??? ?????? ???-???? ?????? ? ???? ???????.
  6. ????????????, ??? ????????? ????????? ???????? ?????????????? ??????? ? ??????????? COM ???????? ? ??????? ?? ????? ???????????. COM ??????? ?????????????? ? «HKEY_CLASSES_ROOT\CLSID». ???? ???? «????????????????» ? Wow64, ?.?. ?????????? ??? ?????? ????? ????? 32-? ? 64-? ?????????, ??????? ???????????????? ????? ????? ? ??????? ????????? Registry Reflection. ??? ???, ?????????? ????????? ?? ?????? ??????????? ?? ????????, ?????? «LocalServer32» ?????? ?? .msi ? ?????? ? 32-? ?????? ????, ? «ProgID» ??????????? ??????? ?? Custom Action ? 64-? ????????? ????. ??? ????-????? ????????, ???? ?? Windows 7 ? ?????? ?? ??????????? Registry Reflection.
  7. ??????? ??? ?????? ???, ??????? ??? ?????? ???, ??? ??????, ???????????? ? ?????? ????????? Windows ? ??????? UNICODE_STRING, ?? ??????????? ?????. ?? ?????????, ??????? ?, UNICODE_STRING ? ?? ?????? ??????????? ?????! ?? ???? ?????? ???? ?????????? UNICODE_STRING ?????????? ?????, ??????? ????????? ????????? ??????????. ???????? ??????? ???? ?? ?????.

????? ?????????? ???????? ???????? ?????? ??????????? ? ???, ??? ?????????? ?????????? ??? ??? «??????????» ???. «????????????» ??? ???? ?????????? ????????? (??? ??? ???????, ?????????? ?? ????, ????????? ??????? ???????? ??????????? ?? ?????? ????????????? ???), ???? ??????? ????????? (????????, ???? ??? ????? ??????? ?????? ????????????, ??????? ?????? ?????????????? ? ???????? ?????).

??? ??? ? ?????…

Cross-posted from blog.not-a-kernel-guy.com.