使用 Microsoft.Win32 命名空間讀取和寫入登錄 (Visual Basic)
雖然在進行登錄的程式設計時 My.Computer.Registry 應該涵蓋您的基本需求,但您也可以在 .NET Framework 的 Microsoft.Win32 命名空間 (Namespace) 內使用 Registry 和 RegistryKey 類別。
Registry 類別內的機碼
Registry 類別提供可用來存取子機碼 (Subkey) 及其值的基底登錄機碼。 基底機碼本身是唯讀的。 下表列出並說明了 Registry 類別公開 (Expose) 的七個機碼。
機碼 |
說明 |
---|---|
定義文件類型以及和這些類型相關聯的屬性 |
|
包含非使用者特定的硬體組態資訊 |
|
包含目前使用者喜好設定的相關資訊,如環境變數 |
|
包含動態登錄資料,如虛擬裝置驅動程式使用的登錄資料 |
|
包含保存本機電腦之組態資料的五個子機碼 (Hardware、SAM、Security、Software 和 System) |
|
包含軟體元件的效能資訊 |
|
包含預設使用者喜好設定的相關資訊 |
安全性注意事項 |
---|
更為安全的做法是將資料寫入至目前的使用者 (CurrentUser),而非寫入本機電腦 (LocalMachine)。 當您正在建立另一處理序 (可能為惡意的) 先前已建立的機碼時,會發生一種狀況,通常稱為「非法佔據」(Squatting)。 為了避免發生這種情況,請使用 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