首 页文章中心下载中心繁體中文
设为首页
加入收藏
联系我们
您当前的位置:开源盛世-源代码下载网 -> 文章中心 -> V B 专区 -> 文章内容 退出登录 用户管理
投票调查
栏目导航
· VC++专区 · V B 专区
· GIS 专区 · PDA 专区
· 其他编程 · 网站开发类
· 数据库类 · 软件应用
· 网络安全 · 论文专区
· 综合资讯
热门文章
· Tab Control控件使用...
· 学生档案管理系统
· [图文] 排列组合公式
· UTF-8与GB2312之间的...
· DirectShow下载安装...
· Virtual PC 在PAE模...
· Windows2000终端服务...
· MapInfo上的GIS系统...
· kalman filter 卡尔...
· Windows2000终端服务...
相关文章
· 在VB中使用API函数(...
· VB中使用水晶报表编...
· 在VC++中访问和修...
· [图文] --=== 让你的程序开...
· 在VB中使用文件对象...
VB中使用系统注册表
作者:佚名  来源:vscodes.com整理  发布时间:2005-12-16 13:42:08  发布人:Polaris

减小字体 增大字体

 

VB中使用系统注册表

ini文件大多用来寸放自己界面或者初始化信息,而应用程序要使用系统信息或者说要得知已在系统注册过的其他程序的一些信息就要读去系统注册表了,比如有些应用需要使用调用MS OutLook Express就需要从HKEY_LOCAL_MACHINESoftwareMicrosoftOutlook Express中的InstallRoot中读取路径。

 

申明部分:

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 "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired 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

Select 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"

Shell shstring

End of《VB中使用系统注册表》

[] [返回上一页] [打 印] [收 藏]
 
∷相关“VB中使用系统注册表”文章评论∷
(评论内容只代表网友观点,与本站立场无关!) [更多评论...]
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站目录 鄂ICP备06007162
开源盛世 版权所有Copyright © 2003-2005 VSCodes.Com. All Rights Reserved.