Vsiaul C#如何读取注册信息

VS2017中MFC里对注册表的读写 VS2017中MFC里对注册表的读写 // MFC02Dlg.cpp : 实现文件 // #include “stdafx.h” #include “MFC02.h” #include “MFC02Dlg.h” #include “afxdialogex.h” #ifdef _DEBUG #define new DEBUG_NEW #endif // CMFC02Dlg 对话框 CMFC02Dlg::CMFC02Dlg(CWnd* pParent /=NULL/) CDialogEx(IDD_MFC02_ 阅读详情

 

 

从视窗95开始,微软公司就在视窗系统中引入了注册表这个概念。注册表到底是什么东东呢?它是视窗系统的一个核心的数据库,在这个数据库中存放中与系统相关的各种参数,这些参数直接控制中系统的启动、硬件的驱动程序安装信息以及在视窗系统上运行的各种应用程序的注册信息等。这就意味着,如果注册表因为某些原因受到了破坏,轻者是视窗系统启动过程出现异常,重者就有可能导致整个系统的完全瘫痪。所以正确的认识注册表,及时的备份注册表,对于视窗用户就显得相当重要。
Vsiaul C#就可以十分方便、简洁的开发出操作注册表的程序。本文就是介绍如何利用VisualC#来读取注册表中的信息。

 

一.初步认识注册表:
单击"开始/运行",在"打开"的后面填入"regedit"。就可以看到注册表的数据结构了。如下图。注:Regedit文件是微软公司提供给用户编辑注册表的一个工具。


点击小图放大,图01:注册表结构图示

如上图左边的部分在注册表中称为"主键",据图可见,"主键"是有层次结构的。主键的下一级主键称为该主键的"子键"。每一个主键可以对拥有多个子键。如图所示,右边的这些值就是所谓的键值了。每一个主键或者子键都可以拥有多个键值。注册表是一个庞大的数据库,在其中每一个主键,每一个键值都赋予了不同的功能。

二.Visual C#如何读取注册表中的主键和键值:
在.Net FrameWork SDK Beta 2版中,有一个Microsoft.Win32的名称空间,在此名称空间中提供了二个用于注册表操作的类:Registry类、RegistryKey类。这二个类都是封闭类,不可以继承。在这二个类,定义了许多关于注册表的方法和属性,通过调用这二个类,在Visual C#中就可以比较轻松的处理关于注册表的各种操作了。
(1).Registry类:
此类主要封装了七个公有的静态域,而这些静态域分别代表这视窗注册表中的七个基本的主键,具体如下所示:
Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键
Registry.CurrentUser 对应于HKEY_CURRENT_USER主键
Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键
Registry.User 对应于 HKEY_USER主键
Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键
Registry.DynDa 对应于HKEY_DYN_DATA主键
Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键
(2).RegistryKey类:
此类中主要封装了对视窗系统注册表的基本操作。在程序设计中,首先通过Registry类找到注册表中的基本主键,然后通过RegistryKey类,来找其下面的子键和处理具体的操作的。

三.通过一个读取注册表信息例子来具体说明这二个来的用法:

(1).程序设计和运行的环境:
I视窗系统2000服务器版

II Net FrameWork SDK Beta 2版
(2)在运行程序前的一些必要的处理工作:
在程序设计时,主要功能是读取已经存在的主键键值,用户可以按照下图所示的结构新建若干个主键和对应的键值:


点击小图放大,图02:程序设计中要读取的注册表的信息

这里有必要说明的是上图只显示了"新项 #3"子键对应的键值。在"新项 #2"子键也有键值,对应的键值是:"新值#1"为"001","新值 #2"为"002"。在"新项 #1"子键中对应的键值是:"新值 #1"为"aaa","新值 #2"为"bbb"。
(3).程序的主要功能:
程序的主要功能是读取指定主键下面的所有子键和子键拥有的键值,并以列表的形式按层次显示出来,下图是本程序运行后界面:


点击小图放大,图03:读取注册表信息并以列表形式显示出来

(4).程序设计过程中的重要步骤以及应该注意的一些问题:

I 程序中读取主键、子键和键值所使用到的方法:
程序中为了读取指定主键下面的子键和子键中拥有的键值,主要使用了RegistryKey类中的四个方法:OpenSubKey,GetSubKeyNames,GetValueNames,GetValue。具体的用法和意思如下:
OpenSubKey ( string name )方法主要是打开指定的子键。
GetSubKeyNames ( )方法是获得主键下面的所有子键的名称,它的返回值是一个字符串数组。
GetValueNames ( )方法是获得当前子键中的所有的键名称,它的返回值也是一个字符串数组。
GetValue ( string name )方法是指定键的键值。
程序中具体的使用语句如下:
RegistryKey hklm = Registry.LocalMachine ;
//打开"SYSTEM"子键
RegistryKey software = hklm.OpenSubKey ( "SYSTEM" ) ;
//打开"001"子键
RegistryKey no1 = software.OpenSubKey ( "001" ) ;
//打开"002"子键
RegistryKey no2 = no1.OpenSubKey ( "002" ) ;

其中listBox1是程序中定义了的列表名称。
II 如何用列表形式显示注册信息:
由于GetSubKeyNames ( )方法和GetValueNames ( )方法的返回值是字符串数组,所以在程序中是通过foreach语句实现遍历这些字符串数组的。并且在遍历的时候,就通过列表形式显示出来,程序中具体实现语句如下:
foreach ( string site in no2.GetSubKeyNames ( ) )
//开始遍历由子键名称组成的字符串数组
{
listBox1.Items.Add ( site ) ;
//在列表中加入子键名称
RegistryKey sitekey = no2.OpenSubKey ( site ) ;
//打开此子键
foreach ( string sValName in sitekey.GetValueNames ( ) )
//开始遍历由指定子键拥有的键值名称组成的字符串数组
{
listBox1.Items.Add ( "" + sValName + ": " + sitekey.GetValue ( sValName ) ) ;
//在列表中加入键名称和对应的键值
}
}

(5).源程序代码:
通过以上的论述,我们可以得到程序的源程序代码,具体如下:
using System ;
using System.Drawing ;
using System.Collections ;
using System.ComponentModel ;
using System.Windows.Forms ;
using System.Data ;
using Microsoft.Win32 ; public class Form1 : Form
{
private System.ComponentModel.Container components ;
private ListBox listBox1 ;
private Button button1 ;
public Form1 ( )
{
InitializeComponent ( ) ;
}
//清除在程序中使用过的资源
public override void Dispose ( )
{
base.Dispose ( ) ;
components.Dispose ( ) ;
}
//初始化程序中使用到的组件
private void InitializeComponent ( )
{
this.components = new System.ComponentModel.Container ( ) ;
this.button1 = new Button ( ) ;
this.listBox1 = new ListBox ( ) ;
button1.Location = new System.Drawing.Point ( 16 , 320 ) ;
button1.Size = new System.Drawing.Size ( 75 , 23 ) ;
button1.TabIndex = 0 ;
button1.Text = "读取注册表" ;
button1.Click += new System.EventHandler( this.button1_Click ) ;
listBox1.Location = new System.Drawing.Point ( 16 , 32 ) ;
listBox1.Size = new System.Drawing.Size ( 496 , 264 ) ;
listBox1.TabIndex = 1 ;
this.Text = "读取主测表信息" ;
this.AutoScaleBaseSize = new System.Drawing.Size ( 5 , 13 ) ;
this.ClientSize = new System.Drawing.Size ( 528 , 357 ) ;
this.Controls.Add( this.listBox1 ) ;
this.Controls.Add ( this.button1 ) ;
}
protected void button1_Click ( object sender , System.EventArgs e )
{
listBox1.Items.Clear ( ) ;
RegistryKey hklm = Registry.LocalMachine ;
RegistryKey software = hklm.OpenSubKey ( "SYSTEM" ) ;
//打开"SYSTEM"子键
RegistryKey no1 = software.OpenSubKey ( "001" ) ;
//打开"001"子键
RegistryKey no2 = no1.OpenSubKey ( "002" ) ;
//打开"002"子键
foreach ( string site in no2.GetSubKeyNames ( ) )
//开始遍历由子键名称组成的字符串数组
{
listBox1.Items.Add ( site ) ;
//在列表中加入子键名称
RegistryKey sitekey = no2.OpenSubKey ( site ) ;
//打开此子键
foreach ( string sValName in sitekey.GetValueNames ( ) )
//开始遍历由指定子键拥有的键值名称组成的字符串数组
{
listBox1.Items.Add ( "" + sValName + ": " + sitekey.GetValue ( sValName ) ) ;
//在列表中加入键名称和对应的键值
}
}
}
public static void Main ( )
{
Application.Run ( new Form1 ( ) ) ;
}
}


四.总结:
用Visual C#来读取注册表中的注册信息是通过名称空间Micorsoft.Win32中的二个类来实现的。在这二个类中还定义了对注册表信息的删除、修改和重命名的一些方法。这些方法比起本文介绍的读取方法、打开方法来说,更具有破坏性,但也更实用。对应这些方法的介绍将在以后的文章中进行。
通过以上的介绍,我们发现用Visual C#来处理注册表,其实是一件比较轻松而简单的事情。事情虽然是轻松的,但我也要提醒各位,由于注册表在视窗系统中的重要作用,所以在每一次对注册表进行操作之前,一定要备份,在操作的时候也要非常小心,因为你的每一次的误操作都可能导致你的系统崩溃。

 

SentEval学习笔记 SentEval allows you to evaluate your sentence embeddings as features for the followingdownstreamtasks: Task Type #train #test needs_train set_classifier MR movie review(影评) 11k 11k 1 1 CR product review(产品评述) ... 阅读详情

相关推荐

硅谷刷屏的ClawdBot,让Mac mini卖爆了!创始人爆料:一人开发、100% AI 写代码

这两天,个人 AI 助手 ClawdBot 席卷硅谷,国内外社交平台上全是关于它的讨论。 在试用后,网友们纷纷给出了很高的评价。“它是迄今为止最伟大的 AI 应用,相当于你 24 小时全天候专属 AI 员工。”Creator Buddy 创始人兼 CEO Alex Finn 盛赞道,“这就是他们 (Anthropic) 希望 Claude Cowork 呈现的样子。”

技术引领业务创新 1587

C#读取系统注册表信息

本文讲解通过C#读取系统注册表信息。 操作流程 1.1. 相关类的介绍 1.1.1. RegistryKey RegistryKey是C#程序中用于获取系统注册表信息以及对注册表进行相关操作的类,该类是在Microsoft.Win32下的,其定义如下所示: Registry…::.GetValue 方法, 检索与指定的注册表项中的指定名称关联的值。如果在指定的项中未找到该名称,则返回提供的默认值;或者,如果指定的项不存在,则返回 nullNothingnullptrnull 引用(在 Visual Bas

weixin_41883890的博客 3979

Cadence仿真数字电路功耗

Cadence仿真数字电路功耗 数字电路的功耗采用平均电流乘电源电压获得,所以本文的关键是测量平均电流。 仿真前设置好仿真参数后,在仿真的ADE街边选择:outputs➡to be saved➡select on design 选择电源的负端电流(若选择正端,则电流为负): 选择完成后,在ADE界面讲所选节点的plot也勾选上,点击run。仿真完成后自动显示波形。在波形上选中该电流曲线,右击选择:send to➡calculator 注意上图中,商店前的波形不稳定,需要进行截取。在calculator

qq_41519780的博客 1万+

C#中如何获取注册表信息

需求:WinForm中Login模块呈现时,需要提供ODBC服务列表供User选择实现方式:利用Microsoft.win32类提供的注册表类访问系统注册表获取ODBC数据服务列表。具体实现:    Microsoft.win32提供了RegistryKey类,用来访问系统的注册表。    ///定义注册表子Path    string strRegPath = @"SOFTWARE/ODBC/O

小鸟的窝 4334

MobaXterm隧道配置详解:为PyCharm远程开发打通‘最后一公里’

本文详细解析了如何利用MobaXterm配置SSH隧道,实现PyCharm远程开发的高效连接。通过本地端口转发技术,开发者可以安全访问内网服务器,特别适用于需要通过跳板机的复杂网络环境。文章涵盖从基础配置到企业级运维的全套解决方案,包括性能优化、安全加固等实用技巧。

weixin_30566063的博客 506

MDK开发篇:基于立创逻辑派FPGA-G1与Cortex-M1软核的按键控制LED实战

本文详细介绍了基于立创逻辑派FPGA-G1开发板与高云Cortex-M1软核的完整开发流程。通过Gowin云源软件配置软核系统与GPIO外设,并在Keil MDK环境中编写按键控制LED的C程序,最终实现程序固化与上电自启动。教程涵盖硬件配置、软件开发、在线调试与固化部署全步骤,帮助STM32开发者快速上手FPGA软核开发。

weixin_42103128的博客 149

C#通过windows注册表获取软件清单的方法

本文实例讲述了C#通过windows注册表获取软件清c#教程单的方法。分享给大家供大家参考。具体如下: foreach (string SoftwareName in Object.SoftwareList()) { textBox.Text += SoftwareName + Environment.NewLine; } //////////////////////////////////////////////////////////////////////// /// <summary&gt

chinaherolts2008的博客 645

ComfyUI安装包运行前准备:增加虚拟内存

在Windows系统中,虚拟内存是一种重要的系统资源管理机制,它主要通过将硬盘空间用作内存来扩展系统的可用内存容量。以下是虚拟内存的主要作用: 1. 扩展物理内存容量 当物理内存(RAM)不足时,系统会将一部分数据从内存转移到硬盘上的虚拟内存区域(也称为“分页文件”或“交换文件”)。这样可以为正在运行的程序提供额外的“内存空间”,确保系统能够继续运行,而不会因为内存不足而崩溃。 2. 提高系统稳定性 虚拟内存为系统提供了一个缓冲区。如果没有虚拟内存...

聚梦小课堂 1万+

【WinForm】exe程序实现读取或写入注册表

当遇到首次安装,需要在宿主机器做一下记录时,就需要通过读取和写入注册表来实现读写记录,下面讲一下 新建一个类UseRegistry.cs,定义两个常量值,一个程序名APP_NAME自己命名,另一个是注册表REG_NAME的路径要填正确,代码如下 public class UseRegistry { const String APP_NAME = "TOOL_BOX_2022"; const String REG_NAME = @"SOFTWARE\Microsoft\Windows\C

1695

从Mule ESB到Apache Camel:手把手教你设计一个轻量级企业集成框架的‘心脏’

本文深入探讨了从Mule ESB到Apache Camel的轻量级企业集成框架设计实践,对比了两者在协议支持、消息处理能力和部署灵活性等方面的差异。通过实际代码示例和性能优化技巧,帮助开发者构建高效的核心模块,适用于现代微服务架构下的系统集成需求。

weixin_28738165的博客 375

农业生产AI决策系统架构设计解密:数据层-模型层-应用层核心逻辑

想象一下,在一个炎热的夏日,传统农田里的农民伯伯正满头大汗地检查每一株玉米是否缺水;而几公里外的智慧农场里,一位年轻农民正在空调房里滑动手机屏幕,看着AI系统自动生成的灌溉计划——这就是农业生产AI决策系统带来的改变。本文的目的,就是要揭开这个"智能农业大脑"的面纱,详细讲解它的"身体构造"(架构设计)和"工作原理"(核心逻辑)。我们将聚焦系统最核心的三个部分:数据层(收集农田信息)、模型层(分析信息并思考决策)和应用层(将决策告诉农民)。

AI智能探索者的博客 1327

用Vsiaul C#如何读取注册信息

/打开此子键 foreach ( string sValName in sitekey.GetValueNames ( ) ) //开始遍历由指定子键拥有的键值名称组成的字符串数组 { listBox1.Items.Add ( "" + sValName + ": " + sitekey.GetValue ( sValName ) );在"新项 #2"子键也有键值,对应的键值是:"新值#1"为"001","新值 #2"为"002"。主键的下一级主键称为该主键的"子键"。就可以看到注册表的数据结构了。

biyusr的专栏 672

CAPL自动化测试

通过本文的学习,读者应该对CAPL自动化测试有了初步的了解,并能够编写复杂的CAPL脚本。在实际项目中,CAPL的应用非常广泛,希望读者能够通过不断的学习和实践,掌握更多的CAPL技巧,提高自己的开发能力。

闲人编程的博客 1529

vs2017C语言调用注册表,VS2010注册表读写

注册表是windows操作系统中用于管理存储系统设置的数据库,在应用程序开发过程中,用注册表为应用程序保存相关不经常变动的参数为普遍采用的方式。开发的应用程序可以在注册表中存储自己的数据,然后在开发的应用程序中调用,提供了非常便利的方式。​VS2010注册表数据读写一、实现代码(CPP):​void CRegEdit::WriteReg(){HKEY key ;if(RegOpenKey(HKE...

weixin_39600510的博客 404

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

vs2017C语言调用注册表,C#修改注册表demo

某次需要使用C#对注册表进行操作,不过却发现没有权限,研究了以下发现是当前系统用户的问题。除非当前系统用户是Administrator,否则就会给你抛出一个异常。后来在网上发现了一个方法,原来C#也可以获取用户的系统管理员权限的,虽然需要用户进行确认。这里我对Oracle软件的一个键进行了操作,想要将值改为一个指定的字符。在进入注册表后,进行提升权限操作,获取权限后执行bat文件和reg文件。当然...

weixin_39965881的博客 468

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

如何用Visual C#来创建、修改注册表信息

在《如何读取注册信息》和《用Visual C#来删除注册表中的注册信息》文章中,已经探讨了用Visual C#来读取、删除注册表中的注册信息,在本篇文章中我们就来介绍Visual C#注册表编程的另外二个重要的操作:创建注册信息和修改注册信息。 在上二篇文章中,我们已经知道,由于Visual C#本身没有类库,他是通过.Net框架中的.Net FrameWork SDK(软

2444

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 读取二进制文件判断是否文件尾
下一篇: 用JSP来实现文件下载功能的几种方式
JavaAlpha
博客等级 码龄18年 910粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值