*c#在64位上编写32位程序时注册表重定向的问题解决办法**

*

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位电脑上就能按照你所指定的路径去查找注册表了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值