转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> VB.NET程序 >> 正文
利用VB.NET访问注册表         ★★★★

利用VB.NET访问注册表

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1379 更新时间:2009/4/23 19:01:19

利用VB.NET访问注册表

 

译者注:访问注册表的例子比较多,然而通过VB.NET访问注册表的例子并不多,本文翻译了一篇MSDN上的利用VB.NET存取注册表的例子,挺详细也挺全面的。 ( http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vbtchimpdragdrop.asp)

Cat Francis
Visual Studio Team
Microsoft Corporation

April 2002

摘要:这篇文章描述了利用VB.NET内置函数DeleteSetting, GetAllSettings, GetSettingSaveSetting,以及通用语言运行时的两个类Registry 和 RegistryKey来存取注册表的实例,详述了所需的权限,解释了何时利用注册表编辑器,并向你展示了如何利用程序从注册表中动态的读取数据及如何写入数据。

引言

当用VB.NET进行编程时,你可能会选择用VB.NET或.NET框架中的Registry类中的函数来访问注册表。虽然大多数情况下VB.NET的内置函数足够用了,然而某些情况下你仍然需要.NET框架类来解决问题。

注册表不仅存储了本地机上一些程序的信息,还保存了操作系统的信息。操作注册表可能会有危险。因此编程时必须谨慎的查看代码,确保程序对所运行的机器上的安全不会构成威胁。

注册表入口点包括两部分:键名和键值。入口点是存储在系统中的键和子键,类似于文件系统中的目录和子目录。

必备知识

要想读懂本文需要有如下的必备知识:

1、熟悉上一个版本的Visual Basic。

2、注册表设计和利用的知识。

3、理解访问注册表的安全含义。

用VB.NET内置函数访问注册表

VB.NET提供了四个访问注册表的函数,为了使用它们,首先必须有读写权限。任何运行在全信任模式下的代码都必须有访问注册表的必要的权限。可以查看RegistryPermission类从而获得更多的信息。

VB.NET函数

描述

DeleteSetting

删除注册表中应用程序中的某项或键值

GetSetting

返回注册表中应用程序入口点的键值

GetAllSettings

返回注册表中程序入口点的一列键值

SaveSetting

在注册表中创建或保存程序的设置

注意:不能通过GetSetting函数返回某项的名字

如果无法保存某项的设置,将触发一个ArgumentException对象。参见ArgumentException可以获得更多的相关信息。

下面的例子在注册表中创建了一个主键和两个子键。首先打印主键的值,然后输出主键及其两个子键的值,然后删除第二个子键,在输出主键和第一个子键的值来确定是否删掉了第二个子键。

'''' Create the first key.
SaveSetting("TestApp","Startup","FirstKey","First")
'''' Create the first subkey.
SaveSetting("TestApp","FirstKey","FirstSubKey","FirstSub")
'''' Create the second subkey.
SaveSetting("TestApp","FirstKey","SecondSubKey","SecondSub")
Try
   '''' Write the first key''''s value.
   Console.WriteLine ((GetSetting("TestApp","Startup","FirstKey"))
   '''' Write the first key as well as its two subkeys.
   Console.WriteLine (GetAllSettings("TestApp","Startup"))
   Catch e As ArgumentException
   Catch e As Exception
   Console.WriteLine (e.GetType.ToString)
   Finally
End Try
DeleteSetting("TestApp","FirstKey","SecondSubKey")
Try
   Console.WriteLine (GetSetting("TestApp","Startup","FirstKey"))
   Console.WriteLine (GetAllSettings("TestApp","Startup"))
   Catch e As ArgumentException
   Catch e As Exception
   Console.WriteLine (e.GetType.ToString)
   Finally

End Try

用VB.NET内置的注册表访问函数是有限制的你只能访问到HKEY_CURRENT_USER\Software\VB and VBA Program Settings下的注册表项,而且要想访问到该项下的条目必须登录到系统,因为HKEY_CURRENT_USER主键在未登录情况下是不能访问的。

用.NET框架访问注册表

上面提到,用VB.NET内置的注册表访问函数只能访问到HKEY_CURRENT_USER\Software\VB and VBA Program Settings下的注册表项,因而应用是很有限的。这时,你可以用.NET框架的Microsoft.Win32命名空间中的Registry和RegistryKey类来访问注册表。可参见Registry和RegistryKey。

 

安全须知:向当前用户的注册表(Microsoft.Win32.Registry.CurrentUser)写入数据比向本地机的注册表(Microsoft.Win32.Registry.LocalMachine)写数据更安全。还有两一种情况,就是当你正在创建的键值已经被先前的另一个可能恶意的进程创建时,这就是典型的蹲坐。为了这种情况发生,用RegistryKey.GetValue方法来获得键值,当某个键不存在时该方法将返回Nothing。

Registry类提供了一些可以访问注册表主键及其子键的一些方法,基键本身是只读的。下表列出了Registry类提供的访问注册表的方法

Key

Description

ClassesRoot

定义了关联到文档和属性的类型

CurrentConfig

包含不属于特定用户的硬件配置信息

CurrentUser

包含了当前用户参数的信息,例如环境变量

DynData

包含了动态注册表数据,如某些虚拟设备驱动器所用到的数据

LocalMachine

存储了本地机的配置数据,包括五个子键Hardware, SAM, Security, Software, and System

PerformanceData

包含了软件组件的性能信息

Users

包含了默认用户参数的信息

 

下面的例子显示了如何从HKEY_CURREN

[1] [2]  下一页


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台