使用 Microsoft.Win32 命名空间读取和写入注册表
更新:2007 年 11 月
虽然在对注册表进行编程时,My.Computer.Registry 应该可以满足您的基本需求,但您也可以使用 .NET Framework 的 Microsoft.Win32 命名空间中的 Registry 和 RegistryKey 类。
Registry 类中的项
Registry 类提供了可用于访问子项及其值的基本注册表项。这些基本项自身是只读的。下表列出并描述了 Registry 类公开的七个注册表项。
项 |
说明 |
---|---|
定义文档类型以及与那些类型相关联的属性。 |
|
包含不特定于用户的硬件配置信息。 |
|
包含有关当前用户首选项(例如,环境变量)的信息。 |
|
包含动态注册表数据,例如,虚拟设备驱动程序使用的数据。 |
|
包含五个子项(Hardware、SAM、Security、Software 和 System),其中存储了本地计算机的配置数据。 |
|
包含软件组件的性能信息。 |
|
包含有关默认用户首选项的信息。 |
安全说明: |
---|
与将数据写入本地计算机 (LocalMachine) 相比,将数据写入当前用户 (CurrentUser) 更安全。如果您要创建的项此前已由另一个(可能是恶意的)进程创建,这时就会出现一种通常称为“强占”的情况。若要避免出现这种情况,请使用一个在项已经不存在时返回 Nothing 的方法,如 GetValue。 |
从注册表中读取值
以下代码显示如何从 HKEY_CURRENT_USER 中读取字符串。
Dim regVersion As Microsoft.Win32.RegistryKey
Dim keyValue As String
keyValue = "Software\\Microsoft\\TestApp\\1.0"
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then
intVersion = regVersion.GetValue("Version", 0)
regVersion.Close()
End If
下面的代码读取并增长一个字符串,然后将其写入 HKEY_CURRENT_USER。
Dim regVersion As Microsoft.Win32.RegistryKey
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey( _
"SOFTWARE\\Microsoft\\TestApp\\1.0", True)
If regVersion Is Nothing Then
' Key doesn't exist; create it.
regVersion = Microsoft.Win32.Registry.CurrentUser.CreateSubKey( _
"SOFTWARE\\Microsoft\\TestApp\\1.0")
End If
Dim intVersion As Integer = 0
If (Not regVersion Is Nothing) Then
intVersion = regVersion.GetValue("Version", 0)
intVersion = intVersion + 1
regVersion.SetValue("Version", intVersion)
regVersion.Close()
End If