当前位置:首页 > 宅科技 > 正文

会声会影X9版本号修改工具-制作笔记3

2016072001

前几天接到zlzlzl老师的提议,制作此工具,以方便为论坛的老人们,现将遇到的一些问题写出来做一记录

问题三:32位软件写64位注册表被重定向

首先是扯犊子,win64位环境下操作32位软件会被重定向,由于我所使用的编译器为win32,故无法直接写入64位的注册表。

根据MSDN,以下注册表项也会被重定向。

HKEY_LOCAL_MACHINE\Software 
HKEY_USERS\*\Software\Classes 
HKEY_USERS\*_Classes 

32位进程想要访问64位注册表(或者64位进程想要访问32位注册表),需调用RegEnableReflectionKey和RegDisableReflectionKey关闭与开启注册表重定向,使用RegOpenKeyEx并通过设置samDesired 的KEY_WOW64_32KEY和KEY_WOW64_64KEY标志位来打开想要打开的注册表项

下为32位程序访问64位注册表的操作

#define KEY_WOW64_64KEY 256 
#define KEY_WOW64_32KEY 512
typedef bool (__stdcall *RegEnableReflectionKey )(HKEY);
typedef bool (__stdcall *RegDisableReflectionKey)(HKEY);
HINSTANCE libInst = LoadLibrary("Advapi32.dll");
	if (!libInst) return false; //Couldn't load library 
	RegEnableReflectionKey EnableReflectionKey=(RegEnableReflectionKey)GetProcAddress(libInst, "RegEnableReflectionKey"); 
	RegDisableReflectionKey DisableReflectionKey=(RegDisableReflectionKey)GetProcAddress(libInst, "RegDisableReflectionKey");
	if(DisableReflectionKey)
	{
		DisableReflectionKey(p_hKey);
	}
#define KEY_WOW64_64KEY 256 
#define KEY_WOW64_32KEY 512
::RegOpenKeyEx(p_hKey, p_pSubKey, NULL,	KEY_ALL_ACCESS|KEY_WOW64_64KEY,	&hkey);
if(EnableReflectionKey)
		{
			EnableReflectionKey(hkey);
		}

 


 

欢迎加入电脑问题互助交流,群聊号码:865856349

文章标题:会声会影X9版本号修改工具-制作笔记3
本文作者:慕若曦
发表日期:2016-08-5 04:53 星期五    首发于    暮若夕
本文固定链接: https://www.muruoxi.com/404.html
 
文章标签:
上一篇: 下一篇:

3 条评论

评论加载中...
  1. 地板
    梦浪   

    ~( ̄▽ ̄~)(~ ̄▽ ̄)~

    2016年8月6日 下午4:21 评论
  2. 板凳
    风情   

    各种懵逼

    2016年8月6日 上午9:59 评论
  3. 沙发
    姜辰   

    大师笔记·····

    2016年8月5日 下午5:50 评论

发表评论

╮( ̄▽ ̄)╭ |  (= ̄ω ̄=) |  (>﹏<) |  Σ( ° △ °|||)︴ |  Σ(っ °Д °;)っ |  X﹏X |  (╯-_-)╯╧╧

小提示:提交评论后刷新本页面即可看到隐藏的文件哦~
十年之约
加载中……