C# 32位程序访问64位注册表

接上文:http://www.cnblogs.com/TaiYangXiManYouZhe/p/5086974.html

上代码:

RegistryKey localKey;
if (Environment.Is64BitOperatingSystem)
   localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
else
   localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);

string value = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Office\15.0\Common\InstallRoot").GetValue("Path").ToString();

很简单,首先,Environment.Is64BitOperatingSystem 判断是否是64位的操作系统。

然后通过注册表打开目录时,传入相应的RegistryView枚举即可。注意:打开注册表时,调用的是OpenBaseKey方法!

时间: 2024-10-24 09:53:17

C# 32位程序访问64位注册表的相关文章

32位程序访问64位系统上的Windows注册表

今天在工作的过程中遇到个奇怪的为问题,就是通过c#获取注册表键值的问题,一般都比较简单: string SQLPath = string.Empty; RegistryKey hkml = Registry.LocalMachine; RegistryKey MSSQLServerKey = hkml.OpenSubKey(@"SOFTWARE\MICROSOFT\MSSQLServer"); if (MSSQLServerKey != null) { string[] keys =

C# 32位程序在64位系统下注册表操作

在64位的Windows操作系统中,为了兼容32位程序的运行,64位的Windows操作系统采用重定向机制.目的是为了能让32位程序在64位的操作系统不仅能操作关键文件文夹和关键的注册表并且又要避免与64位程序冲突 相关资料请查看32位程序在64位系统下运行的重定向机制 下面是以获取操作系统安装密匙KEY的案例: using System; using System.Collections.Generic; using System.Linq; using System.Text; using

c#32位程序操作64位注册表

1 RegistryKey localKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64); 2 try 3 { 4 localKey = localKey.OpenSubKey( 5 @"SOFTWARE\Macromedia", true); 6 if (localKey != null) 7 { 8 localKey.DeleteSubKe

32位程序在64位系统上获取系统安装时间(要使用KEY_WOW64_64KEY标记)

众所周知,取系统的安装时间可取注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion的子项InstallDate,此值是个DWORD类型的UnixStamp.  但是在64位系统上有所不同(仅测试了win7.win8),默认情况下32程序在64位机器上访问的是下面这个地址HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows NT\CurrentVersion

32位程序在64位电脑下运行,

操作的注册表写入和读取会被定位到HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node下 但部份系统注册信息在HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node下是没有的,所以就会导致32位程序在64位程序下执行出现异常.如HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography下MachineGuid在那个节点下是没有的 为了这个问题让我花了不少冤枉时间.在此记一下 32位程序在64位电脑下运行,

32位程序移植64位经验

最近移植了一个32位程序到64位,原本以为简单的事,折腾了好几天,现在记录下来过程,供有相关问题的人参考:程序是一个输入法,源代码来自盒子 http://www.2ccc.com/article.asp?articleid=2850,再此感谢刘麻子大侠,输入法大量的使用了windows定义的结构体或记录类型,涉及的数据类型很多,在32到64转换的过程中参考了http://blog.csdn.net/hpjx1987/article/details/51453586,首先感谢作者共享知识,但这里有

32位程序注入64位DLL到64位进程

向其它进程注入DLL通常的做法是通过调用CreateRemoteThread这个API在目标进程内创建一个远程线程.用这个线程来调用LoadLibraryA或LoadLibraryW(下文统称LoadLibrary)以实现让目标进程载入指定的DLL文件. 使用CreateRemoteThread创建一个远程线程须要传入一个线程过程函数的地址,而且这个函数地址是须要在目标进程中有效的. 因为LoadLibrary是kernel32.dll的导出函数.所以对于执行在同一个系统上的同为32位的进程或同

关于32位程序在64位系统下运行中需要注意的重定向问题(有图,很清楚)

0x00 前言 最近学习了[email protected]的文章<Persistence Architecture Matters>,恰巧解决了我之前遇到过的一个问题,理清了文件和注册表重定向中需要注意的细节 大家在学习的过程中难免也会碰到,所以在此分享一下. <Persistence Architecture Matters>的链接:https://labs.mwrinfosecurity.com/blog/persistence-architecture-matters/ 0

32位系统与64位系统

64位系统已经非常普及了,因此我们写代码的时候,了解32位与64位系统的编码差异就显得很重要了.我用的计算机是win10,64位,之前对于任务管理器里的进程32和64分不清,而且对于System32与SestemWow64两个文件夹也时常搞错,今天看书查资料才终于弄懂一些. 64位系统有两个System目录,C:\Windows\System32和C:\Windows\SysWOW64,前者主要包含64位系统文件,后者目录下主要是32位系统文件,这个跟它们名字里的数字刚好是相反的(困扰我好长时间