VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 3145|回复: 3

[原创] 在注册表中指定位置建立所需键值并在关闭时删除它

[复制链接]
 楼主| 发表于 2010-8-26 08:57:03 | 显示全部楼层 |阅读模式
'**************************************************************************
'**模 块 名:Form1
'**说    明:永远的魔灵 by icecept(郭卫)
'**创 建 人:icecept(魔灵)
'**日    期:2010-08-24 04:48:01
'**修 改 人:icecept(魔灵)
'**版    本:V1.0.0
'**E-mail  :icecept@163.com    QQ:543375508
'**网    址:http://hi.baidu.com/icecept   http://icecept.jimdo.com
'*************************************************************************
'' 关闭打开的键
Private Declare Function RegCloseKey Lib "advapi32.dll" _
                          (ByVal hKey As Long) As Long
'建立键
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
                          (ByVal hKey As Long, _
                          ByVal lpSubKey As String, _
                          phkResult As Long) As Long
' 打开键
Private Declare Function RegOpenKey Lib "advapi32.dll" _
                          Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
'写入值
Private Declare Function RegSetValueEx Lib "advapi32" Alias "RegSetValueExA" ( _
                          ByVal hKey As Long, ByVal lpValueName As String, _
                          ByVal Reserved As Long, ByVal dwType As Long, _
                          ByVal lpData As String, ByVal cbData As Long) As Long
'删除加入的键值
Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" ( _
                          ByVal hKey As Long, ByVal lpValueName As String) As Long
'得到注册表中的键值
Private 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
Private Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_SZ = 1
Private Sub Command1_Click()
    Dim hKey As Long
    Dim Name As String * 255  '注册表项的默认值
    Dim intname1 As Integer   '文件名所在的位置
    RegCreateKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Active Setup\Installed Components\{45ea75a0-a269-11d1-b5bf-0000f8051515}", hKey
    RegQueryValueEx hKey, "stubpath", 0&, REG_SZ, ByVal Name, Len(Name)
    intname1 = InStr(Name, "c:\1.txt")
    If intname1 = 0 Then
        RegSetValueEx hKey, "stubpath", 0, REG_SZ, ByVal "c:\1.txt", LenB(StrConv("c:\1.txt", vbFromUnicode)) + 1
        RegCloseKey hKey
        MsgBox "成功加入stubpath键值", , "提示"
    Else
        MsgBox "要建立的值已经存在,不用重新建立", vbOKOnly Or vbInformation
    End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Dim hKey As Long
    Dim Name As String * 255  '注册表项的默认值
    Dim intname1 As Integer   '文件名所在的位置
    RegOpenKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Active Setup\Installed Components\{45ea75a0-a269-11d1-b5bf-0000f8051515}", hKey
    RegQueryValueEx hKey, "stubpath", 0&, REG_SZ, ByVal Name, Len(Name)
    intname1 = InStr(Name, "c:\1.txt")
    If intname1 = 0 Then
        MsgBox "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{45ea75a0-a269-11d1-b5bf-0000f8051515}\stubpath\c:\1.txt 不存在"
        RegCloseKey hKey
        Exit Sub
    Else
        RegDeleteValue hKey, "stubpath"
        RegCloseKey hKey
        MsgBox "成功删除stubpath键值", vbOKOnly, "提示"
    End If
End Sub
'判断注册项是否存在
Public Function IsSubKeyName(RootKey As Long, SubKeyName As String, Optional hKey As Long) As Boolean
    '0表示注册表项存在,非0表示注册表项不存在
    If RegOpenKey(RootKey, SubKeyName, hKey) = 0& Then
        IsSubKeyName = True         '注册表项存在
    Else
        IsSubKeyName = False        '注册表项不存在
    End If
End Function

在注册表中建立所需键值并在关闭时删除它.rar

3.28 KB, 下载次数: 580

发表于 2010-8-31 00:55:46 | 显示全部楼层
不错,,,顶一下。。。
回复 支持 反对

使用道具 举报

发表于 2010-8-31 01:03:17 | 显示全部楼层
斑竹做的例子都很不错
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-19 20:34:48 | 显示全部楼层
要做就要做成通俗易懂的,不是所有人都是高手,写得太复杂了恐怕时间长了我自己也看不懂了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2019-8-18 10:56

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表