VB中使用系統登錄檔 (轉)
VB中使用登錄檔
ini大多用來寸放自己介面或者初始化資訊,而應用要使用系統資訊或者說要得知已在系統註冊過的其他程式的一些資訊就要讀去系統登錄檔了,比如有些應用需要使用MS Express就需要從HKEY_LOCAL_MACHINESoftwareOutlook Express中的Install中讀取路徑。:namespace prefix = o ns = "urn:schemas-microsoft-com::office" />
申明部分:
Option Explicit
Public Const READ_CONTROL = &H20000
Public Const STANDARD_RIGHTS_READ = (READ_CONTROL)
Public Const STANDARD_RIGHTS_WRITE = (READ_CONTROL)
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_CREATE_LINK = &H20
Public Const SYNCHRONIZE = &H100000
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const KEY_READ = ((STANDARD_RIGHTS_READ Or KEY_QUERY_VALUE Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY) And (Not SYNCHRONIZE))
Public Const KEY_WRITE = ((STANDARD_RIGHTS_WRITE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY) And (Not SYNCHRONIZE))
Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Public Const KEY_EXECUTE = ((KEY_READ) And (Not SYNCHRONIZE))
Public Const ERROR_SUCCESS = 0&
Declare Function RegOpenKeyEx Lib "adv32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal sesired As Long, phkResult As Long) As Long
Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Function sdaGetRegEntry(strKey As String, strSubKeys As String, strValName As String, lngType As Long) As String
On Error GoTo sdaGetRegEntry_Err
Dim lngResult As Long, lngKey As Long
Dim lngHandle As Long, lngcbData As Long
Dim strRet As String
Case strKey
Case "HKEY_CLASSES_ROOT": lngKey = &H80000000
Case "HKEY_CURRENT_CONFIG": lngKey = &H80000005
Case "HKEY_CURRENT_USER": lngKey = &H80000001
Case "HKEY_DYN_DATA": lngKey = &H80000006
Case "HKEY_LOCAL_MACHINE": lngKey = &H80000002
Case "HKEY_PERFORMANCE_DATA": lngKey = &H80000004
Case "HKEY_USERS": lngKey = &H80000003
Case Else: Exit Function
End Select
If Not ERROR_SUCCESS = RegOpenKeyEx(lngKey, strSubKeys, 0&, KEY_READ, lngHandle) Then Exit Function
lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData)
strRet = Space(lngcbData)
lngResult = RegQueryValueEx(lngHandle, strValName, 0&, lngType, ByVal strRet, lngcbData)
If Not ERROR_SUCCESS = RegCloseKey(lngHandle) Then lngType = -1&
sdaGetRegEntry = strRet
sdaGetRegEntry_Exit:
On Error GoTo 0
Exit Function
sdaGetRegEntry_Err:
lngType = -1&
MsgBox Err & "> " & Error$, 16, "GenUtils/sdaGetRegEntry"
Resume sdaGetRegEntry_Exit
End Function
看起來很複雜,用起來卻簡單的緊,這就達到了複雜的目的了。
例如:使用OutLook Express
Dim outLook_Path As String
Dim shstring As String
outLook_Path = sdaGetRegEntry("HKEY_LOCAL_MACHINE", "SoftwareMicroSoftOutlook Express", "InstallRoot", 2)
shstring = Mid(Trim(outLook_Path), 1, Len(outLook_Path) - 1) & "msimn.exe"
shstring來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-989754/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用Java操作Windows系統登錄檔JavaWindows
- 在VC++中訪問和修改系統登錄檔 (轉)
- Windows XP系統登錄檔的恢復(轉)Windows
- 用登錄檔儲存資料 (VB函式篇) (轉)函式
- win10系統中登錄檔如何開啟 win10系統開啟登錄檔的步驟Win10
- 駭客經常更改的系統配置檔案及登錄檔(轉)
- 提升 UNIX 中檔案系統使用效率(轉)
- 在DOS下使用登錄檔掃描程式 (轉)
- 在VB中使用檔案物件 (轉)物件
- Windows 98 登錄檔妙用(轉)Windows
- win10系統怎麼修復登錄檔_win10登錄檔怎麼修復Win10
- win10系統登錄檔怎麼修復 win10一鍵修復登錄檔Win10
- M$的系統啟動在登錄檔的位置
- 匯出系統登錄檔抓Hash的思路整理
- 遠端登錄檔訪問 (轉)
- 登錄檔資料庫Registry (轉)資料庫
- Windows XP 登錄檔修改精粹(轉)Windows
- Windows XP登錄檔詳解(轉)Windows
- VB中得到當前目錄API定義 (轉)API
- Win10系統怎麼修改登錄檔ProfileName值Win10
- Win10系統如何清理登錄檔垃圾【圖文】Win10
- 登錄檔
- Win10系統開啟登錄檔提示“登錄檔編輯器已停止工作”怎麼辦Win10
- VB中檔案操作的兩種方式 (轉)
- 使用 /proc 檔案系統來控制系統(轉)
- 怎樣在VC++中訪問和修改登錄檔 (轉)C++
- 利用Windows登錄檔儲存資訊 (轉)Windows
- Windows 98 登錄檔的應用(轉)Windows
- Windows 98 登錄檔大修改(轉)Windows
- Windows XP 登錄檔“四兄弟”(轉)Windows
- win10怎麼刪除系統無用的登錄檔 win10如何清理無效登錄檔Win10
- win10系統修改登錄檔後儲存不了提示寫入登錄檔時出錯如何解決Win10
- win10系統登錄檔資訊怎麼刪除,win10電腦清除登錄檔資訊的方法Win10
- Win32 API 登錄檔類的編制以及使用 (轉)Win32API
- Win10系統清理登錄檔垃圾的方法【圖文】Win10
- Win10系統利用登錄檔隱藏onedrive的方法Win10
- 使用 Fstransform 轉換檔案系統ORM
- 解析Linux系統根檔案系統的目錄樹(轉)Linux