從注冊表讀取程序的版本
發(fā)表時間:2023-08-03 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]從注冊表讀取程序的版本 屠恩海(SunHai) 開發(fā)工具:Microsoft Visual Studio .NET 2003 操作系統(tǒng):Windows X...
從注冊表讀取程序的版本
屠恩海(SunHai)
開發(fā)工具:Microsoft Visual Studio .NET 2003
操作系統(tǒng):Windows XP
Registry 類簡介
用Visual Studio .NET讀寫注冊表一般用到Registry類.
Registry類提供在運行 Windows 的計算機(jī)上的注冊表中找到的標(biāo)準(zhǔn)根項集。
注冊表是一個存儲設(shè)備,包含有關(guān)應(yīng)用程序、用戶和默認(rèn)系統(tǒng)設(shè)置的信息。例如,應(yīng)用程序可以使用注冊表來存儲在應(yīng)用程序關(guān)閉后需要保留的信息,并在應(yīng)用程序重新加載時訪問那些同樣的信息。例如,可以存儲顏色首選項、屏幕位置或窗口大小。通過將信息存儲在注冊表中的不同位置,可以針對每個用戶來控制這些信息。
由 Registry 公開的基(根) RegistryKey 實例描繪注冊表中的子項和值的基本存儲機(jī)制。所有項都是只讀的,因為注冊表依賴于它們的存在。由 Registry 公開的項有: CurrentUser 存儲有關(guān)用戶首選項的信息。 LocalMachine 存儲本地計算機(jī)的配置信息。 ClassesRoot 存儲有關(guān)類型(和類)及其屬性的信息。 Users 存儲有關(guān)默認(rèn)用戶配置的信息。 PerformanceData 存儲軟件組件的性能信息。 CurrentConfig 存儲非用戶特定的硬件信息。 DynData 存儲動態(tài)數(shù)據(jù)。
一旦標(biāo)識了希望在其下存儲/檢索注冊表中信息的根項后,可以使用 RegistryKey 類添加或移除子項和操作給定項的值。
硬件設(shè)備可以使用即插即用接口將信息自動放在注冊表中。安裝設(shè)備驅(qū)動程序的軟件可以通過向標(biāo)準(zhǔn) API 寫入將信息放在注冊表中。
RegistryKey 類
RegistryKey 類表示 Windows 注冊表中的項級節(jié)點。此類是注冊表封裝。
注冊表充當(dāng)計算機(jī)上操作系統(tǒng)和應(yīng)用程序的中央信息儲存庫。注冊表根據(jù)存儲在其中的元素的邏輯順序,以分層形式組織(有關(guān)該層次結(jié)構(gòu)中的基級項,請參見 Registry )。在注冊表中存儲信息時,請根據(jù)存儲的信息類型選擇適當(dāng)?shù)奈恢。一定要避免損壞由其他應(yīng)用程序創(chuàng)建的信息,原因是這樣會導(dǎo)致那些應(yīng)用程序出現(xiàn)意外的行為,并且還會對您自己的應(yīng)用程序帶來不利影響。
RegistryKeys 是注冊表中的基本組織單位,好比是 Windows 資源管理器中的文件夾。特定的項可以有子項(與文件夾可以有子文件夾一樣),并且只要用戶具有適當(dāng)?shù)膭h除權(quán)限,且此項不是基項或基項的下一級項,就可以刪除此項。每個項還可以有多個關(guān)聯(lián)的值(值好比是文件),用于存儲您感興趣的應(yīng)用程序的信息。每個值保存一條特定的信息,在需要時可以檢索或更新此信息。例如,可以為您的公司創(chuàng)建一個 RegistryKey(在項 HKEY_LOCAL_MACHINE\Software 下),然后為您的公司創(chuàng)建的每個應(yīng)用程序創(chuàng)建一個子項。每個子項保存特定于該應(yīng)用程序的信息,如顏色設(shè)置、屏幕位置和大小或者可識別的文件擴(kuò)展名。
注意,存儲在注冊表中的信息可由其他應(yīng)用程序和用戶使用,因此不要用注冊表存儲安全信息或關(guān)鍵的應(yīng)用程序信息。
若要獲取 RegistryKey 的實例,請使用靜態(tài)成員 OpenSubKey ,或者使用 Registry 類的靜態(tài)成員。
本文主要用到:
RegistryKey.OpenSubKey 方法:用指定的寫訪問權(quán)限檢索指定的子項。
以只讀方式檢索子項。
[Visual Basic] Overloads Public Function OpenSubKey(String) As RegistryKey
RegistryKey.GetSubKeyNames 方法: 檢索包含所有子項名稱的字符串?dāng)?shù)組。
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 '本機(jī)是否安裝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類讀寫注冊表是否十分簡便呢?