【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《如何用代码修改注册表项》,欢迎阅读!
我们先来声明API函数,本例中用到的两个函数声明如下:
Private Declare Function RegCreateKey& Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey&, ByVal lpszSubKey$, lphKey&) As Long
Private Declare Function RegSetValue& Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey&, ByVal lpszSubKey$, ByVal fdwType&, ByVal lpszValue$, ByVal dwLength&) As Long
RegCreateKey函数的作用是在注册表中指定的主键下创建一个新的主键,而如指定的键已经存在,那么函数会打开现有的主键,其中各个参数的意义如下表所示:
参数 hKey
意义
Long,要打开键的句柄,或者一个标准键名。例如:HKEY_CLASSES_ROOT 是标准键名
lpSubKey String,欲创建的新子键。如创建多个键,需用反斜杠将它们分隔开。例如:level1\newkey phkResult Long,指定一个变量,用于得到新子键的句柄,在设置键值时要用到它 返回值
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
RegSetValue函数用于设置指定键或子键的默认值,它的各个参数的意义如下:
参数 hKey lpSubKey dwType lpData cbData 返回值
意义
Long,一个已打开键的句柄,可从上面phkResult得到,或是指定一个标准键名 String,要设置键值的一个子键的名字。如指定vbNullString,表示设置hKey的默认值。如指定的子键不存在,则会创建它 Long,必须是REG_SZ String,新的键值
Long,指定lpData的长度,不包括空中止字符
Long,零(ERROR_SUCCESS)表示成功。其他任何值都代表一个错误代码
下面我们看看怎样实现文件关联,步骤一:在在注册表的HKEY_CLASSES_ROOT下创建MyApp主键:
ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
语句中sKeyName已经预先赋值为"MyApp",而函数执行完后lphKey&会返回新创建的主键的句柄,然后我们向句柄lphKey&所指的位置写入键值sKeyValue(已经赋值为"Logfiles")
ret& = RegSetValue&(lphKey&, "", REG_SZ, sKeyValue, 0&)
如果这时查看注册表,会发现如下图所示的新主键和键值:
步骤二:在注册表的HKEY_CLASSES_ROOT下创建另外一个主键,键名为“.log”,键值为“MyApp”,创建的方法与第一步相同,只不过键名和键值不同。建立此键值的作用是,把“.log”文件关联到“MyApp”主键所规定的内容,这时的注册表如下:
第三步:我们为“MyApp”设置了一个命令行,也就是在主键MyApp下建立如下主键:
实现的代码是:
sKeyName = "MyApp" '*名为MyApp的键名
sKeyValue = "notepad.exe %1" '*把键值设为"notepad.exe %1",%1指的是要打开的文件 '如果该键已经创建,则RegCreateKey那么函数会打开现有的项 ret& = RegCreateKey&(HKEY_CLASSES_ROOT, sKeyName, lphKey&)
'下面一句的实际效果是在MyApp键下建立shell\open\command目录,并写入键值sKeyValue '说明:放在一个键的shell\open\command下的是打开某一类型文件的应用程序的名称 ret& = RegSetValue&(lphKey&, "shell\open\command", REG_SZ, sKeyValue, MAX_PATH)
经过以上几个步骤,我们已经建立了“.log”文件和“记事本”程序的关联。总结前面的内容可以发现在VB中采用API对注册表操作的基本思路都是类似的,只要我们知道了两个API函数的用法,然后熟悉注册表操作,就能灵活的写出与注册表相关的程序来。
本文来源:https://www.wddqxz.cn/89783c74f46527d3240ce093.html