*
c#在64位上编写32位程序时注册表重定向的问题解决办法*
最近写一个CAD的安装程序,在获取cad注册表信息时(主要是为了获取cad的版本信息),高版本的cad注册信息总是获取不到,后来经过在网上四处找资料,终于解决了这个问题。
注册表信息找不到,其主要原因是由于64位系统为32位程序建立了一个独立的运行空间,也就是系统文件夹SysWOW64,而注册表则建立在Wow6432Node路径下,所以32位程序在运行时,系统会自动将其定位到这个文件夹和注册表的位置,当然这个重定向是有开关的,可以关闭。
网上大部分资料都是写如何关闭和打开这个重定向的方法,这里有一个较为简单的方法可以解决,但前提是必须在.net4.5的框架下才行。具体代码如下:
RegistryKey localMKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Environment.Is64BitOperatingSystem ? RegistryView.Registry64 : RegistryView.Registry32);
然后再打开下级子项
localMKey.OpenSubKey(string.Format(fmt, ver, app), true)
这样,在64位电脑上就能按照你所指定的路径去查找注册表了!