WIN32汇编语言教程:第15章 注册表和INI文件 · 15.3 对注册表的操作(8)
invoke lstrcat,addr @szFileName,addr szParam
invoke lstrlen,addr @szFileName
inc eax
invoke RegSetValueEx,@hKey,NULL,NULL,\
REG_EXPAND_SZ,addr @szFileName,eax
invoke RegCloseKey,@hKey
.endif
ret
_SetExt endp
;####################################################################
子程序的第一部分创建了“.test”子键,第二部分创建了“testfile\shell\open\ command”子键,注意在可执行文件名字符串前要加上“%1”字符串,这样系统才会将数据文件的文件名放在命令行参数中传给可执行文件。由于系统必须将“%1”字符串替换成数据文件名,所以command子键默认值的数据类型被定义为REG_EXPAND_SZ类型。
由于在两次RegSetValueEx函数的调用中设置的都是子键的默认值,所以函数的lpValueName参数都被指定为NULL。
在所附光盘的Chapter14\Associate目录中有一个将“*.test”文件与Associate.exe文件关联的例子,这个例子是在第13章中的Cmdline例子中添加_SetExt子程序代码形成的。读者可以仔细分析源程序并执行一下,执行文件以后再双击目录中的Hello.test文件,就会发现Associate.exe文件被执行了,而且文件显示的第二个参数为“Hello.test”,这表示对“*.test”文件的关联生效了!
要撤销关联,只要进行逆向操作—将“.test”子键和“testfile\shell\open\ command”子键删除就可以了。
上页:第15章 注册表和INI文件 · 15.3 对注册表的操作(7) 下页:第16章 TCP/IP和网络通信 · 16.1 网络基础知识(1)