我有一个遗留的Windows应用程序,它从特定的注册表项(及其子项)中读取值 . 我想更改它读取的密钥,因此当它打开时,例如HKEY_LOCAL_MACHINE \ SOFTWARE \ Something,它将被透明地重定向到HKEY_LOCAL_MACHINE \ SOFTWARE \ Redirected \ Something . 甚至是HKEY_CURRENT_USER中的相应键 .

这与Windows本身用于WOW64虚拟化(https://msdn.microsoft.com/en-us/library/windows/desktop/aa384232(v=vs.85).aspx)的内容相同 .

我可以将DLL注入目标进程,从目标进程上下文中调用必要的API,因此可能有一些隐藏的系统API,它公开了这个功能 . 我现在想的唯一方法是挂钩所有相关的注册表API并在每次调用这些API时更改所请求的密钥,但我认为这是一种相当极端的方法,所以我想找到更好的方法 .

也许WOW64注册表重定向内部API可以(ab)用于此?或者可能存在一些比所有核心注册表API函数的API挂钩更少涉及的方法?

提前致谢 .