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

Posted 堕落天才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 System.Threading.Tasks;
using Microsoft.Win32;

namespace ReadProductKey
{
    class Program
    {
        static void Main(string[] args)
        {
            string BackupProductKeyDefault;
            RegistryKey localKey = null;
            try
            {
          //判断操作系统版本(64位\\32位)打开注册表项 localKey
= RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, Environment.Is64BitOperatingSystem?RegistryView.Registry64: RegistryView.Registry32);
          //得到注册表键值 BackupProductKeyDefault
= localKey.OpenSubKey(@"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\SoftwareProtectionPlatform").GetValue("BackupProductKeyDefault", "").ToString(); Console.WriteLine(BackupProductKeyDefault); Console.ReadLine(); } catch (Exception ex) { } } } }

程序执行界面:

注意:如果以 RegistryView.Registry32打开注册表项,并编译为32位版本的程序是不能获取系统关键注册表键值的

原文地址:http://www.cnblogs.com/iamlucky/p/5998510.html

以上是关于C# 32位程序在64位系统下注册表操作的主要内容,如果未能解决你的问题,请参考以下文章

Qt_32位程序在64位系统下读取64位注册表

64位系统下注册32位dll文件

从 32 位应用程序读取 64 位注册表

64位 regsrv win10_Regsvr32 在64位机器上的用法

64位 regsrv win10_Regsvr32 在64位机器上的用法

使用 32 位应用程序修改 64 位注册表,反之亦然