设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2745|回复: 7
打印 上一主题 下一主题

用API将信息写在注册表指定的地方

[复制链接]
跳转到指定楼层
1#
发表于 2002-6-15 09:29:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我们可以看到一些程序在开机时就会自动运行,象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

  如果你对注册表各个部分的功能还不了解的话,可以参照“电脑入门”栏目下的注册表教程进行学习。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2002-6-15 09:34:00 | 只看该作者

好东东!

好东东!有空多贴些!
3#
 楼主| 发表于 2002-6-15 09:42:00 | 只看该作者
转载于洪恩在线
4#
发表于 2002-6-15 16:50:00 | 只看该作者
可是怎樣從注冊表中讀取寫出的值,并進行運用哪?
5#
 楼主| 发表于 2002-6-15 18:16:00 | 只看该作者
在VBA帮助中查找savesetting,getallsetting,getsetting,deletesetting
6#
发表于 2002-6-23 21:02:00 | 只看该作者

根据 binbow_z 提供的代码做的例子

文件下载 RAR3.0压缩

请大家继续提供代码解决如下问题:
1、如果删除指定注册表位的键
2、如果指定注册表位的键值
7#
发表于 2009-9-27 11:35:06 | 只看该作者
谢谢分享。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 18:58 , Processed in 0.087996 second(s), 30 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表