使用 Microsoft.Win32 命名空間讀取和寫入登錄 (Visual Basic)
雖然 My.Computer.Registry
應該會涵蓋對登錄進行程式設計時的基本需求,但是您也可以在 .NET 的 Microsoft.Win32 命名空間中使用 Registry 和 RegistryKey 類別。
登錄類別中的機碼
Registry 類別提供可用來存取子機碼和其值的基底登錄機碼。 基底機碼本身是唯讀的。 下表列出並描述 Registry 類別所公開的七個機碼。
索引鍵 | 說明 |
---|---|
ClassesRoot | 定義文件類型以及與這些類型相關聯的屬性。 |
CurrentConfig | 包含非使用者特定的硬體組態資訊。 |
CurrentUser | 包含目前使用者偏好設定的相關資訊 (例如環境變數)。 |
DynData | 包含動態登錄資料 (例如虛擬裝置驅動程式所使用的動態登錄資料)。 |
LocalMachine | 包含五個子機碼 (Hardware、SAM、Security、Software 和 System) 來保存本機電腦的組態資料。 |
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