注册表的学习 和 实例
Windows 操作系统的注册表包含了很多有关计算机运行的配置方式,打开注册表我们可以看到注册表是按类似于目录的树结构组织的,其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG。

  下面解释这5个类的作用

  HKEY_CLASSES_ROOT该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用于储存注册表的信息。该主键下的子键决定了在WINDOWS中如何显示该类文件以及他们的图标,该主键是从HKEY_LCCAL_MACHINE\SOFTWARE\Classes映射过来的。

  HKEY_CURRENT_USER该主键包含了如用户窗口信息,桌面设置等当前用户的信息。

  HKEY_LOCAL_MACHINE主键包含了计算机软件和硬件的安装和配置信息,该信息可供所有用户使用
  HKEY_USERS该主键记录了当前用户的设置信息,每次用户登入系统时,就会在该主键下生成一个与用户登入名一样的子键,该子键保存了当前用户的桌面设置、背景位图、快捷键,字体等信息。一般应用程序不直接访问改主键,而是通过主键HKEY_CURRENT_USER进行访问。

  HKEY_CURRENT_CONFIG该主键保存了计算机当前硬件的配置信息,这些配置可以根据当前所连接的网络类型或硬件驱动软件安装的改变而改变。

  C#也支持对注册表的编辑,.NET框架在Microsoft.Win32名字空间中提供了两个类来操作注册表:Registry和RegistryKey。这两个类都是密封类不允许被继承。下面我们分别来介绍这两个类。

  Registry类提供了7个公共的静态域,分别代表7个基本主键(其中两个在XP系统中没有,在这就不介绍了)分别是:Registry.ClassesRoot,Registry.CurrentUser,Registry.LocalMachine,Registry.Users,Registry.CurrentConfig。它们分别对应哪几个键我想各位一看就会知道吧。

  RegistryKey类中提供了对注册表操作的方法。要注意的是操作注册表必须符合系统权限,否则将会抛出错误。

  下面我们就来几个操作注册表常用的几个方法

  创建子键的方法原型为:

  public RegistryKey CreateSubKey(string sunbkey);

  参数sunbkey表示要创建的子键的名称或路径名。创建成功返回被创建的子键,否则返回null。

  打开子键的方法原型为:

  public RegistryKey OpenSubKey(string name);
  public RegistryKey OpenSubKey(string name,bool writable);

  参数name表示要打开的子键名或其路径名,参数writable表示被打开的子键是否允许被修改,第一个方法打开的子键是只读的。Microsoft.Win32类还为我们提供了另一个方法,用于打开远程计算机上的注册表,方法原型为:

  public static RegistryKey OpenRemoteBaseKey(RegistryHive hKey,string machineName);

  删除子键的方法原型为:

  public void DeleteKey(string subkey);

  该方法用于删除指定的主键。如果要删除的子键还包含主键则删除失败,并返回一个异常,如果要彻底删除该子键极其目录下的子键可以用方法DeleteSubKeyTree,该方法原型如下:

  public void DeleteKeyTree(string subkey);

  读取键值的方法原型如下:

  public object GetValue(string name);
  public object GetValue(string name,object defaultValue);

  参数name表示键的名称,返回类型是一个object类型,如果指定的键不存在则返回null。如果失败又不希望返回的值是null则可以指定参数defaultValue,指定了参数则在读取失败的情况下返回该参数指定的值。

  设置键值的方法原型如下:

  public object SetValue(string name,object value);

我的实例
try
            {
                RegistryKey myRegisTryKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\青鸟华光\PhotoManage 2.0", RegistryKeyPermissionCheck.Default);
                if (myRegisTryKey.GetValue("ExpireDay", string.Empty).ToString() == string.Empty)
                {
                    myRegisTryKey.SetValue("ExpireDay", System.DateTime.Now.AddDays(-30).ToString("yyyy-MM-dd").Trim(), RegistryValueKind.String);
                }
                else
                {
                    string sExpireDay = myRegisTryKey.GetValue("ExpireDay", string.Empty).ToString().Trim();
                    if (sExpireDay.Trim() != string.Empty)
                    {
                        if (sExpireDay.Trim() == DateTime.Now.ToString("yyyy-MM-dd").Trim())
                        {
                            MessageBox.Show("您正使用的软件版本已经过期", "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                            this.Close();
                            Application.Exit();
                            return;
                        }
                    }
                }
                myRegisTryKey.Close();
            }
            catch (Exception ee)
            {
                MessageBox.Show(ee.Message.ToString(), "提示", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                return;
            }

posted on 2007-06-20 10:31 文强 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/Gerry-BJ/archive/2007/06/20/790090.html

注册表的学习 和 实例相关推荐

  1. 注册表REG文件编写实例(创建、删除、添加、更改键值)

    转载自:http://www.newxing.com/Tech/Soft/system/84.html Windows 中的注册表文件( system.dat 和 user.dat )是 Window ...

  2. 使用Python操作注册表

    http://sucre.iteye.com/blog/710576 与注册表操作相关的函数可以分为打开注册表.关闭注册表.读取项值.c添加项值.添加项,以及删除项等几类. 1.打开注册表 对注册表进 ...

  3. 删除python的注册表_Python操作注册表详细步骤介绍

    Python操作注册表步骤之1.打开注册表 对注册表进行操作前,必须打开注册表.在Python中,可以使用以下两个函数:RegOpenKey和RegOpenKeyEx.其函数原型分别如下所示. Reg ...

  4. [转载] 黑鹰完完全全学习注册表——剖析注册表文件体系

    需要用到的软件:系统注册表(regedit.exe) 内容: 1.Windows 98的物理文件构成 Windows 98注册表的物理文件构成比较简单,是由两个文件构成的: User.dat:特定的用 ...

  5. Windows注册表修改实例完全手册(上)

    注册表是Windows操作系统的核心.它实质上是一个庞大的数据库,存放有计算机硬件和全部配置信息.系统和应用软件的初始化信息.应用软件和文 档文件的关联关系.硬件设备说明以及各种网络状态信息和数据.可 ...

  6. Window操作系统注册表学习

    Window操作系统注册表学习 一.注册表的由来及概念           从Windows 95开始,Microsoft在Windows中引入了注册表(英文为REGISTRY)的概念(实际上原来在W ...

  7. HTML-6.表单学习—如何做一个注册(登录)网页

    目录 (2)账号:(input,text) (3)密码:(input,password) (4)提交:(imput,submit) (5)重置:(input,reset) (6)知识点 (7)单选框标 ...

  8. [转载] 黑鹰完完全全学习注册表——注册表概念介绍

    需要用到的软件:系统注册表(regedit.exe) 内容: 1.DOS时代的"注册表":在DOS时代,系统只能按照默认的DOS系统参数运行,根本谈不上注册表的概念,对于一些DOS ...

  9. 【前端实例代码】Html5+css3创建登录和注册表单~实现新拟态新拟物风格(Neumorphism)网页图标效果~手把手教学~新手必会~超简单 ~

    b站视频演示效果: [web前端特效源码]Html5+css3创建登录和注册表单2!实现新拟态新拟物风格(Neumorphism)网页图标效果!手把手教学!新手必会!超简单 ~ 效果图: 完整代码: ...

最新文章

  1. 【数据挖掘】数据挖掘简介
  2. Mac brew安装maven
  3. C++实现桶排序——十大经典排序算法之九【GIF动画+完整代码+详细注释】
  4. Ubuntu16.04下面的vs code出现Unable to activate CppCheck analyzer
  5. 二、数据预处理——缺失值处理
  6. 2020年中职学计算机有前途吗,2020年南昌中专计算机专业都学什么
  7. zookeeper删除节点的权限_zookeeper权限管理
  8. 为什么BERT在商业环境碰壁?
  9. Linux运行shell脚本出现出错,可能是环境编码不一致造成的。
  10. python ----元组方法以及修改细节
  11. ActiveMQ demo
  12. 14.Excel vba开发-随机点名
  13. 漂浮广告代码、漂浮代码分析(讲解)
  14. 字模提取工具-PCtoLCD2002使用说明
  15. Oracle增加字段
  16. C语言实现简单打字游戏
  17. Python学习13 ----Seaborn调色板
  18. 计算机三级的英语单词,大学英语三级词汇表(新版)资料.doc
  19. 苹果Home键恢复(无工具篇)
  20. 获取windows系统时间

热门文章

  1. [导入]从函数RND的使用想到的!
  2. java vector编程_Java编程开发中向量(Vector)及其应用
  3. python findcontours_基于Python的opencv学习练习(十二) findContours()轮廓与绘制drawContours()...
  4. lazada发货_Lazada 怎么发货:Lazada 订单发货流程
  5. python对编写神经网络作用_神经网络(BP)算法Python实现及应用
  6. python中合并列表_关于python:如何将两个列表合并到一个列表中?
  7. 从分布式环境的特点、问题到CAP、BASE理论详解
  8. 云南计算机一级c类基础知识,云南省大学计算机 一级C类 【多选题及答案】
  9. html a标签指定区域,第四讲:使用html5中的canvas标签画出一个球在指定区域内的运动...
  10. bar()函数——python绘制柱状图