雖然My.Computer.Registry在針對登錄進行程式設計時應該涵蓋您的基本需求,但您也可以在 .NET 的命名空間中使用 RegistryRegistryKey 和 Microsoft.Win32 類別。
登錄類別中的鍵值
類別 Registry 提供基底登錄機碼,可用來存取子機碼及其值。 基底鍵本身是唯讀的。 下表列出並描述 Registry 類別公開的七個鍵。
| 鑰匙 | 說明 |
|---|---|
| ClassesRoot | 定義與這些類型相關聯的檔和屬性類型。 |
| CurrentConfig | 包含非使用者特定的硬體組態資訊。 |
| CurrentUser | 包含目前使用者喜好設定的相關信息,例如環境變數。 |
| DynData | 包含動態登錄數據,例如虛擬設備驅動器所使用的數據。 |
| LocalMachine | 包含五個子機碼(硬體、SAM、安全性、軟體和系統),可保存本機計算機的組態數據。 |
| PerformanceData | 包含軟體元件的效能資訊。 |
| Users | 包含預設使用者喜好設定的相關信息。 |
這很重要
將數據寫入目前使用者 (CurrentUser) 比寫入本機電腦 (LocalMachine) 更安全。 當您建立的密鑰先前是由另一個可能惡意的程序所建立時,就會出現通常稱為「搶占」的情況。 若要防止這種情況發生,請使用 方法,例如 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