從注冊表讀取程序的版本
屠恩海(SunHai)
開發工具:Microsoft Visual Studio .NET 2003 操作系統:Windows XP
Registry 類簡介
用Visual Studio .NET讀寫注冊表一般用到Registry類.
Registry類提供在運行 Windows 的計算機上的注冊表中找到的標準根項集。 注冊表是一個存儲設備,包含有關應用程序、用戶和默認系統設置的信息。例如,應用程序可以使用注冊表來存儲在應用程序關閉后需要保留的信息,并在應用程序重新加載時訪問那些同樣的信息。例如,可以存儲顏色首選項、屏幕位置或窗口大小。通過將信息存儲在注冊表中的不同位置,可以針對每個用戶來控制這些信息。
由 Registry 公開的基(根) RegistryKey 實例描繪注冊表中的子項和值的基本存儲機制。所有項都是只讀的,因為注冊表依賴于它們的存在。由 Registry 公開的項有: CurrentUser 存儲有關用戶首選項的信息。 LocalMachine 存儲本地計算機的配置信息。 ClassesRoot 存儲有關類型(和類)及其屬性的信息。 Users 存儲有關默認用戶配置的信息。 PerformanceData 存儲軟件組件的性能信息。 CurrentConfig 存儲非用戶特定的硬件信息。 DynData 存儲動態數據。
一旦標識了希望在其下存儲/檢索注冊表中信息的根項后,可以使用 RegistryKey 類添加或移除子項和操作給定項的值。
硬件設備可以使用即插即用接口將信息自動放在注冊表中。安裝設備驅動程序的軟件可以通過向標準 API 寫入將信息放在注冊表中。
RegistryKey 類
RegistryKey 類表示 Windows 注冊表中的項級節點。此類是注冊表封裝。
注冊表充當計算機上操作系統和應用程序的中央信息儲存庫。注冊表根據存儲在其中的元素的邏輯順序,以分層形式組織(有關該層次結構中的基級項,請參見 Registry )。在注冊表中存儲信息時,請根據存儲的信息類型選擇適當的位置。一定要避免損壞由其他應用程序創建的信息,原因是這樣會導致那些應用程序出現意外的行為,并且還會對您自己的應用程序帶來不利影響。
RegistryKeys 是注冊表中的基本組織單位,好比是 Windows 資源管理器中的文件夾。特定的項可以有子項(與文件夾可以有子文件夾一樣),并且只要用戶具有適當的刪除權限,且此項不是基項或基項的下一級項,就可以刪除此項。每個項還可以有多個關聯的值(值好比是文件),用于存儲您感興趣的應用程序的信息。每個值保存一條特定的信息,在需要時可以檢索或更新此信息。例如,可以為您的公司創建一個 RegistryKey(在項 HKEY_LOCAL_MACHINE\Software 下),然后為您的公司創建的每個應用程序創建一個子項。每個子項保存特定于該應用程序的信息,如顏色設置、屏幕位置和大小或者可識別的文件擴展名。
注意,存儲在注冊表中的信息可由其他應用程序和用戶使用,因此不要用注冊表存儲安全信息或關鍵的應用程序信息。
若要獲取 RegistryKey 的實例,請使用靜態成員 OpenSubKey ,或者使用 Registry 類的靜態成員。
本文主要用到:
RegistryKey.OpenSubKey 方法:用指定的寫訪問權限檢索指定的子項。
以只讀方式檢索子項。
[Visual Basic] Overloads Public Function OpenSubKey(String) As RegistryKey
RegistryKey.GetSubKeyNames 方法: 檢索包含所有子項名稱的字符串數組。
Public Function GetSubKeyNames() As String ()
從注冊表讀取Excel的版本
先引入命名空間: Imports System Imports Microsoft.Win32
要對注冊表有所了解,知道我們要讀取的位置在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office。
Dim rk As RegistryKey = _ Registry.LocalMachine.OpenSubKey("Software\Microsoft\Office", True)
' Get the data from a specified item in the key. Dim s As String() = rk.GetSubKeyNames()
Dim blnExcel As Boolean = False '本機是否安裝Excel Dim excelVer As String 'Excel的版本號
For num As Integer = 0 To s.Length - 1 Select Case s.GetValue(num) Case "11.0", "9.0", "8.0", "5.0", "4.0", "3.0" 'Excel各個版本號 Dim rk1 As RegistryKey = _ Registry.LocalMachine.OpenSubKey("Software\Microsoft\Office\" & s.GetValue(num) & "\Excel", True) If Not (rk1 Is Nothing) Then blnExcel = True excelVer = s.GetValue(num) Exit Select Exit For End If End Select Next
用RegistryKey類讀寫注冊表是否十分簡便呢?
|