尽管My.Computer.Registry在针对注册表编程时应涵盖基本需求,但也可以使用 Registry .NET 命名空间中的RegistryKey和Microsoft.Win32类。
注册表类中的项
该 Registry 类提供可用于访问子项及其值的基注册表项。 这些基项本身是只读的。 下表列出了由 Registry 类公开的七个键,并对其进行了描述。
| 密钥 | 说明 |
|---|---|
| ClassesRoot | 定义文档的类型和与这些类型关联的属性。 |
| CurrentConfig | 包含不特定于用户的硬件配置信息。 |
| CurrentUser | 包含有关当前用户首选项的信息,例如环境变量。 |
| DynData | 包含动态注册表数据,例如虚拟设备驱动程序使用的注册表数据。 |
| LocalMachine | 包含五个子项(硬件、SAM、安全、软件和系统),用于保存本地计算机的配置数据。 |
| PerformanceData | 包含软件组件的性能信息。 |
| Users | 包含有关默认用户首选项的信息。 |
重要
将数据写入当前用户< c0 />比写入本地计算机< c1 />更安全。 当你创建的项以前已由其他进程(可能是恶意的)进行了创建时,会发生通常称为“强占”的情况。 若要防止出现这种情况,请使用某种方法,例如 GetValue ,若键尚不存在,则此方法返回 Nothing 。
从注册表读取值
以下代码演示如何从HKEY_CURRENT_USER读取字符串。
Dim regVersion As Microsoft.Win32.RegistryKey
Dim keyValue = "Software\\Microsoft\\TestApp\\1.0"
regVersion = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(keyValue, False)
Dim intVersion As Integer = 0
If regVersion IsNot Nothing Then
intVersion = regVersion.GetValue("Version", 0)
regVersion.Close()
End If
以下代码读取、递增,然后将字符串写入HKEY_CURRENT_USER。
Dim 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 regVersion IsNot Nothing Then
intVersion = regVersion.GetValue("Version", 0)
intVersion = intVersion + 1
regVersion.SetValue("Version", intVersion)
regVersion.Close()
End If