| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3687 人关注过本帖
标题:VB写入注册表的问题!
只看楼主 加入收藏
卡卡希比
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:2283
专家分:189
注 册:2007-7-1
结帖率:70%
收藏
 问题点数:0 回复次数:9 
VB写入注册表的问题!
我想把注册表里,
原本是0的修改为1怎么通过VB来修改
搜索更多相关主题的帖子: 注册表 
2007-10-29 19:27
随风逐流
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:passerby
等 级:版主
威 望:8
帖 子:4054
专家分:271
注 册:2007-6-13
收藏
得分:0 
SaveSetting

[url=http://www./html/6/6694/]极道金丹[/url][url=http://www./html/2/2849/]九阴九阳[/url][url=http://www./html/2/2596/]凡人修仙传[/url]
2007-10-29 19:35
卡卡希比
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:2283
专家分:189
注 册:2007-7-1
收藏
得分:0 
SaveSetting appname, section, key, value

PLEASE FLUSH AFTER USE!
2007-10-30 07:45
卡卡希比
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:2283
专家分:189
注 册:2007-7-1
收藏
得分:0 

VB对注册表操作程序开机时运行
责任编辑:admin   更新日期:2005-8-6

   我们可以看到一些程序在开机时就会自动运行,象Winpopup就是这样的,这是怎么实现的呢?可以把需要运行的程序添加到“开始”-“程序”-“启动”中,还有一种方法就是写入注册表了,这里我们讨论通过写注册表来实现的方法,从中可以看到三个对注册表操作的API函数的使用技巧。

   首先要声明这三个API函数,它们分别是:RegSetValue、RegCreateKey、RegCloseKey,其作用是设置某一个主键的键值、创建一个主键、关闭对注册表主键的操作。

    Private Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData 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 RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

   然后声明以下两个常数,要进行注册表写入的位置是在HKEY_LOCAL_MACHINE下,我们可以在VB自带的API文本查看器中找到这些常数的定义方法。

    Private Const HKEY_LOCAL_MACHINE = &H80000002
    Private Const REG_SZ = 1

   然后使用如下语句就行了,你可以把这段代码放在程序的某个位置:

   '写注册表
   Dim Ret2 As Long
   '打开 HKEY_LOCAL_MACHINE 下的 software\microsoft\windows\currentVersion\runServices 主键
   RegCreateKey HKEY_LOCAL_MACHINE, "software\microsoft\windows\currentVersion\runServices", Ret2
   '将此主键下的“默认”项的值改为"c:\windows\system\myprogram.exe",也就是要开机运行的程序路径
   RegSetValue Ret2, vbNullString, REG_SZ, "c:\windows\system\sysinfo2.exe", 4
   '关闭对主键的操作
   RegCloseKey Ret2

   如果你对注册表各个部分的功能还不了解的话,可以参照“电脑入门”栏目下的注册表教程进行学习。


PLEASE FLUSH AFTER USE!
2007-10-30 07:55
卡卡希比
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:2283
专家分:189
注 册:2007-7-1
收藏
得分:0 
HKEY_CLASSES_ROOT &H80000000
HKEY_CURRENT_USER &H80000001
HKEY_LOCAL_MACHINE &H80000002
HKEY_USERS &H80000003
HKEY_CURRENT_CONFIG &H80000005
HKEY_DYN_DATA &H80000006

PLEASE FLUSH AFTER USE!
2007-10-30 07:58
卡卡希比
Rank: 5Rank: 5
等 级:贵宾
威 望:16
帖 子:2283
专家分:189
注 册:2007-7-1
收藏
得分:0 

相关的两个API函数是:RegCreateKey[建立SubKey]和RegClose[关闭SubKey]
详细说明:
RegCreateKey函数:
VB声明 Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA"
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
它的参数用法与RegOpenKey一样。所不同的是RegOpenKey只能打开已经有的SubKey,而RegCreateKey则可以建立SubKey,比较特别的是,如果调用RegCreateKey所建立的SubKey是一个已经存在的SubKey,则它的功能和RegOpenKey相同。由于RegCreateKey的这种特性,有的程序员干脆不用RegOpenKey,而用RegCreateKey来统一代替RegOpenKey。
RegClose函数:
Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
当我们不再存取Registry时,将打开或建立的SubKey关闭是一个比较好的习惯,就正如我们在使用C语言的文件打开函数后必须要关闭一样。

一个完整的例子:

Option Explicit
Public Const HKEY_CLASSES_ROOT = &H80000000
Public Const HKEY_CURRENT_USER = &H80000001
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const HKEY_USERS = &H80000003
Public Const HKEY_PERFORMANCE_DATA = &H80000004
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_DYN_DATA = &H80000006

Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA"
(ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long

Sub Main()
Dim ret As Long, hKey As Long, hKey2 As Long
ret = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft", hKey)
If ret = 0 Then
MsgBox "HKLM\SOFTWARE\Microsoft = " & hKey
End If

ret = RegOpenKey(hKey, "Windows\CurrentVersion", hKey2)
If ret = 0 Then
MsgBox "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion = " & hKey2
End If


'Use RegCreateKey function to create subkey "HKEY_LOCAL_MACHINE\SOFTWARE\Hongqt"
ret = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Hongqt", hKey)
If Not ret Then
MsgBox "Create HKEY_LOCAL_MACHINE\SOFTWARE\Hongqt SubKey Success"
Else
MsgBox "Create Subkey Operation Fail"
End If

RegCloseKey hKey
RegCloseKey hKey2
End Sub


PLEASE FLUSH AFTER USE!
2007-10-30 08:02
那边有朵蘑菇云
Rank: 1
来 自:很……那啥的一个地方
等 级:新手上路
威 望:1
帖 子:390
专家分:0
注 册:2007-9-3
收藏
得分:0 
传说中的API 学习了

身不残 志更不坚
2007-10-30 08:06
yanligangylg
Rank: 1
等 级:新手上路
帖 子:84
专家分:0
注 册:2007-10-28
收藏
得分:0 
看不懂..

就是死也要拉着VB去死
2007-10-30 12:16
jqcn
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2007-10-30
收藏
得分:0 
同上

在网络挣扎!!!!!
2007-10-31 05:22
yuma
Rank: 12Rank: 12Rank: 12
来 自:银河系
等 级:贵宾
威 望:37
帖 子:1933
专家分:3012
注 册:2009-12-22
收藏
得分:0 
不如用VBS方便,VB6对注册表的操作有限制的。

心生万象,万象皆程序!
本人计算机知识网:http://bbs.为防伸手党,本站已停止会员注册。
2022-10-24 21:26
快速回复:VB写入注册表的问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012624 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved