64位系统中读写注册表

在群里下载了一个CAD自动加载.NET程序源码程序。先在64位系统中运行了,不能读取当前CAD版本及已加载的.NET程序集。加了try调试,问题在于registry.localmachine.opensubkey永远返回的是Null。所以……

百度了没有发现为什么,还是谷歌找到答案:是因为64位系统的问题。解决方法是:重新定义一下Machine64(参考链接一)。

RegistryKey localMachine64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
RegistryKey keyCAD = localMachine64.OpenSubKey(cadKeyName);

需要注意的是FrameWork框架要改成4.0,因为4.0才有RegistryView枚举和OpenBaseKey方法。如果想写成一个类,可参见参考链接二

当然,更好的写法是判断系统的版本:

参考链接一:http://stackoverflow.com/questions/2464358/why-is-opensubkey-returning-null-on-my-windows-7-64-bit-system

参考链接二:http://www.bluefaq.com/csharp/8769

时间: 2024-10-06 07:55:32

64位系统中读写注册表的相关文章

在64位系统中ocx控件调用问题

问题描述 在64位系统中ocx控件调用问题 在64位系统中已注册32位程序的ocx控件,为什么32位程序无法显示ocx控件? 解决方案 和64位没有什么关系,你的程序必须是32bit的才可以调用32bit的控件. 如果你用的是C#,你需要强制将程序集限定为32bit 参考:http://blog.csdn.net/blueboy2000/article/details/4242369 解决方案二: jsp调用ocx控件 解决方案三: 你是不是用的的32bit版本的regsvr32注册. 然后就是

VB的32位程序在64位系统中出现文件和注册表自动转向的解决方法_vb

通常用VB 写的程序在32位系统上可以正常的运行,但到了64位系统中虽然可以运行但是无法修改OEM信息.经过查找原因可以发现,当我们在访问文件夹"SYSTEM32"的时候系统会自动转向到文件夹"SYSWOW64"下,当我们在访问某些注册表键值的时候,和文件转向类似,系统也会自动地把程序的访问转向到Wow6432Node下面. 先来谈谈文件系统的转向,查找了一些资料,并没有VB相关的资料,但是可以查到2个相关函数:Wow64DisableWow64FsRedirect

第十七章——配置SQLServer(2)——32位和64位系统中的内存配置

原文:第十七章--配置SQLServer(2)--32位和64位系统中的内存配置 前言:         本文讲述32位和64位系统中的内存配置,在SQLServer 2005/2008中,DBA们往往尝试开启AWE来限制内存.但是,在SQLServer2012以后,这个选项将被弃用,所以不能使用这种方式来控制32位实例的虚拟地址空间.如果你服务器上有很多内存,就只能升级到64位系统.下面是微软给出的内存限制:         虽然2012以后已经弃用AWE,但是了解一下32位系统如何使用AWE

虚拟机-在linux6.5 64位系统中安装qt5.5.1出现不能编译

问题描述 在linux6.5 64位系统中安装qt5.5.1出现不能编译 1C 我在虚拟机linux6.5 64位系统中安装来qt5.5.1(qt-opensource-linux-x64-5.5.1.run),在安装完之后启动qt进入qt开发页面.自己随意创建一个测试项目,在编译到时候报如下错误:Configuration is faulty. Check the Issues view for details.Error while building/deploying project cs

应用程序自动关闭-iis6 64位系统 中的应用程序池自动关闭

问题描述 iis6 64位系统 中的应用程序池自动关闭 每天都会出现应用程序关闭的问题 Faulting application w3wp.exe, version 6.0.3790.3959, stamp 45d69572, faulting module mscorwks.dll, version 2.0.50727.3662, stamp 53ce1c99, debug? 0, fault address 0x00000000006c4a39. 解决方案 查看一下系统的生成的dump等,然

关于java在64位系统中遇到的问题

问题描述 为什么我使用装64位系统后在eclipse中连接mssql2008也不报错,但是就是获取不到connection,但是在myeclipse中却可以呢?使用的都是"sqljdbc4.jar" 问题补充:chen_yongkai 写道 解决方案 eclipse和myeclipse中用的jdk是一样的吗?编译后打包运行看看有没有问题?解决方案二:jdk也要64位的版本

Ghost Win7系统中通过注册表添加网络身份验证的方法

  1.点击"开始--运行",在运行对话框中输入"regedit"命令按回车,打开注册表编辑器; 2.在打开的注册表编辑器中依次展开定位到:"HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa"项,然后在窗口右侧中双击打开"Security Packages"; 3.弹出来的"编辑多字符串"对话框中,在列表中添加"tspkg"的内容;

64位系统中IIS7运行ASP时出现ADODB.Connection 800a0e7a错误的解决方法_win服务器

今天将一个ASP网站拷贝到64位的Windows7中运行,IIS7安装都没有问题,可就是死活运行不了,总是出现ADODB.Connection错误"800a0e7a",真是奇怪,之前在XP中运行一点问题都没有的.起初以为是代码上的原因,于是写一段最简单的连接数据库的代码,还是出错,研究半天终于找到了解决方法,拿来分享. 原因是因为在64位Windows7操作系统中,IIS7应用程序池默认没有启用32位应用程序,而我们连接ACCESS数据库的驱动程序Microsoft.Jet.OLEDB

WIN7 64位系统中的HOSTS文件在哪里

  1.host文件就是在C:Windowssystem32driversetchosts下,只要进入资源管理器将地址复制粘贴进去回车就可以看到; 2.如果你看不到的话可能是被系统隐藏了,因为它是具有系统属性的,所以系统是默认不显示此文件,那么就需要将隐藏的文件夹显示出来了 3.默认的hosts文件就127.0.0.1 localhost一句话而已,这句话作用是将localhost这个地址指向127.0.0.1,127.0.0.1,也就是你电脑的地址,那么就可以对里面添加你想要屏蔽的网站了.