如何在vba中用RegEnumKeyEx枚举注册表子键的名称?





要枚举所有注册表子健的名称,实现原理为先用RegOpenKey函数打开要遍历的注册表子健的父键,然后先调用一次RegEnumKeyEx函数,把索引设置为0,获得第一个子健,最后用循环不断地增加索引,获取其它子健,直到返回的值为非0,表示遍历结束,最后用RegCloseKey函数关闭打开的注册表父键。

其中RegEnumKeyEx函数的语法如下:

其中参数hKey表示要遍历的注册表父键的句柄,dwIndex参数表示子健的索引,以0开始,lpName参数为接收子健名称的缓冲区,lpcName参数为接收子健名称的缓冲区的长度,其它参数较少使用,可以全部传入Null。

比如想要遍历注册表键HKEY_CLASSES_ROOT\MIME\Database\Charset 下的所有子健的名称,可以使用如下的代码:

其中的关键点在于每次调用RegEnumKeyEx之后,需要重新设置缓冲区的长度,也就是每次都要设置 lenKeyName = 1024,方能返回正确的子健名称。

打赏
       

发表评论