如何把32位的注册表文件转换为64位的?

来源:互联网 发布:wsn网络分析器sniffer 编辑:程序博客网 时间:2024/06/05 19:20
问题:比如 我的系统是64位的WIN7,但下载的极品飞车14的注册表导入文件却是32位的,于是不能用,还好网上有人做了64位的导入文件。我想知道那些达人是怎么把32位的改成64位的?
把32位的注册表文件转换为64位的方法:
  1.为了防止注册表键冲突,注册表在某些键也分成了两个部分。
  2.一部分是专门给64位系统访问的,另一部分是专门给32位系统访问的,放在Wow6432Node下面。当32位程序去访问某些键值的时候,和文件转向类似,系统也会自动地把程序的访问转向到Wow6432Node下面。
  3.Wow6432Node这个节点存在于HKEY_LOCAL_MACHINE和HKEY_CURRENT_USER下面。Wow64DisableWow64FsRedirection和RegOpenKeyEx方法办到。RegOpenEx方法在C#中调用声明方法如下:
  [DllImport("Advapi32.dll", CharSet = CharSet.Auto, SetLastError = true)]
  public static extern uint RegOpenKeyEx( UIntPtr hKey,string lpSubKey, uint ulOptions,int samDesired,out IntPtr phkResult);
  其中需要注意的是samDesired这个参数。这个参数可以取 KEY_ALL_ACCESS, KEY_QUERY_VALUE, KEY_WOW64_64KEY等值(详情可以查阅MSDN)。已经关闭了文件系统的转向,那么就可以利用:(KEY_QUERY_VALUE | KEY_WOW64_64KEY)来得到注册表的完全访问权限。这个地方需要注意的是,在Vista下面,有一些注册表项是只读的,如果用了KEY_ALL_ACCESS这个参数,就会出现“Access is denied” 这个错误(ErrorCode = 5)。因此,如果不是要写入注册表的话,不要使用KEY_ALL_ACCESS。
0 0
原创粉丝点击