通过C#的注册表类 Registry.GetValue 进行访问时,其返回值一直为空。然后认真检查检查再检查了注册表路径,发现路径没有一点问题,不说废话,上代码:

  if (Registry.GetValue(@"HKEY_LOCAL_MACHINE\software\microsoft\office\15.0\common\installroot", "path", null) != null)
{
//office 2013 安装路径获取成功。
4 }

万般无奈的时候,突然想到系统是64位,不禁想到刚毕业时,在64位系统上使用注册表编辑器导入软件配置环境的问题。首先介绍一下WoW64 (Windows 32-bits on Windows 64-bit),64位系统运行32位程序时,主要是同过该部分实现的。当然在wow下也存在注册表编辑器regedt32.exe。但是WoW64和System32中,注册表编辑器的结果是有可能不同的,下图是office2013的安装路径在WoW64和System32中的不同结果。

上图为使用32位注册表编辑器是的结果,此时Common下是无installroot节点的。

上图为使用64位注册表编辑器是的结果,完全正常。

说道这里,问题很明显了。Registry.GetValue访问注册表是,使用了32位注册表编辑器的结果。

为什么会这样呢,明明是64位的系统,然后检查了工程属性--》生成--》常规--》目标平台,原来是将程序编译成了32位的。将程序编译成32位之后,32位的程序访问注册表的结果与上图一一致。

将目标平台改为64位或者AnyCpu,问题即可解决。

那么问题又来了,32位程序如何访问64位的注册表呢?请看下文:http://www.cnblogs.com/TaiYangXiManYouZhe/p/5087248.html

关于64位操作系统使用C#访问注册表失败的问题的更多相关文章

  1. 在Windows7/8/10 64位操作系统下安装并注册ocx控件

    例如: 先网上下载一个MtbLine.ocx控件放入C:\Windows\SysWOW64\目录下 1.首先确保你的 Windows7 账户是管理员权限 2.下载MtbLine.ocx控件,网上可搜到 ...

  2. 64位操作系统 通过ODP.NET 访问ORACLE 11g

    摘要:64位操作系统部署.NET 程序访问oracle时,无法连接问题.(注意:客户端是64位系统 ,服务端是否64位 还是32位无关.) 1.到oracle 官网搜索相关版本的 ODAC网址: ht ...

  3. 64位操作系统下IIS报“试图加载格式不正确的程序”错误

    缘由:在64位操作系统下IIS发布32位的项目,报“项目依赖的dll无法读取,试图加载格式不正确的程序”错误. 原因:程序集之间的通讯要么全是64位环境下的,要么全是32位环境下的.不能混编访问.不然 ...

  4. ArcEngine 9.3与64位操作系统 冲突

    ArcEngine 9.3与64位操作系统 冲突 2011年03月30日 星期三 11:13 错误信息: 未处理 System.TypeInitializationException  Message ...

  5. (原)解决.NET 32位程序运行在64位操作系统下的兼容性问题

    背景:一个第三方组件是C++.NET  32位开发的,后被C#(基于FrameWork4.0)调用并封装成组件,此二次封装的组件无法运行于64位操作系统上.        开发环境:VS2012:解决 ...

  6. iis6|iis7|配置URLRewriter|64位操作系统下|.net2.0|.net4.0|配置URLRewriter|Web.config配置详情

    想必很多ASP.NET的码友们在IIS配置伪静态被严重纠结过不止一次两次,本园主经过多次站点伪静态配置,总结了一下,IIS版本:IIS 6.IIS 7,服务器:Windows Server 2003. ...

  7. VMware安装64位操作系统提示Intel VT-x处于禁用状态的解决办法

    用VMware安装64位操作系统时,如果目前本地的操作系统是64位的,那么可以说明CPU是肯定支持64位的,这时候如果提示此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态.这个 ...

  8. 64位操作系统弹出"Failed to load the JNI shared library “E:/2000/Java/JDK6/bin/..jre/bin/client/jvm.dll”

    64位操作系统弹出"Failed to load the JNI shared library /..jre/bin/client/jvm.dll”,最大的可能就是jdk的版本问题.去你的C ...

  9. 内置在虚拟机上64位操作系统:该主机支持 Intel VT-x,但 Intel VT-x 残

    VT-Virtual Technology. 在这里特别说一下:虚拟64位操作系统,须要特别在BIOS中打开VT支持.怎样提示:此主机不支持Intel VT-x,则不可能虚拟出64位系统. 当提示:此 ...

随机推荐

  1. Linux VPS实用简单安全配置

    今天,和大家一起来分享VPS最基本的安全配置. 第一.修改SSH端口 VPS默认的SSH端口是22,那些扫描穷举密码的,也势必从22开始,所以,修改22为一个其他的数字,是非常有必要的. 好了,SSH ...

  2. 去除带有iframe页面中的2个滚动条[转]

    方法一:加载frame时修改高度 <div>    <iframe id="frame_content" name="frame_content&quo ...

  3. spark HelloWorld程序(scala版)

    使用本地模式,不需要安装spark,引入相关JAR包即可: <dependency> <groupId>org.apache.spark</groupId> < ...

  4. java 项目中每个jar包的作用总结

    别人的总结 1.Struts2 1)commons-fileupload :2)common-io:文件上传 3)commons-lang:它扩展了标准 java.langAPI ArrayUtils ...

  5. iso不支持document事件

    ios safari游览器除了a.input.button等不支持document事件委托?<body>加上这个样式即可 <style> .clickable-div { cu ...

  6. dr01_SetColor

    1. TGraphicUnit.SetColor 2. 3.

  7. 路由器分配的IP地址

    在IP地址范围内,一部分地址将保留作为私人IP地址空间,专门用于内部局域网使用,这些地址如下表: A类 10.0.0.0-10.255.255.255 网络数:1 B类 172.16.0.0-172. ...

  8. 算法练习2---斐波那契数列java版

    古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子, 假如兔子都不死,问每个月的兔子总数为多少? 数列:1   1   2   3   5   8   ...

  9. android不同的按钮一起点击崩溃解决

    public class ButtonUtils { private static long lastClickTime; public synchronized static boolean isF ...

  10. android 关于Toast重复显示解决方法

    解决思路:   不用计算Toast的时间之类的,就是定义一个全局的成员变量Toast, 这个Toast不为null的时候才去make,否则直接setText.为了按返回键后立即使Toast不再显示,重 ...