我正在尝试创建一个列出特定(Windows 注册表)键的所有子键的函数。
发生的事情是只有第一个项目被正确输出,所有其他项目都被截断或重复 - 我认为这是一个缓冲区问题。
我已经阅读了函数文档,但对我帮助不大。
这是代码:
#include<stdio.h>
#include<windows.h>
void print_list(HKEY hkey, char* path){
char dwValue[255];
DWORD dwSize = 0;
DWORD n; // subkeys
HKEY tmp;
int i;
if(RegOpenKeyEx(hkey, path, 0, KEY_READ, &tmp) == ERROR_SUCCESS){
DWORD dwSize = sizeof(dwValue);
RegQueryInfoKey(tmp,NULL,NULL,NULL,&n,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
for(i=0; i< n; i++){
RegEnumKeyEx(tmp,i,dwValue,&dwSize,NULL,NULL,NULL,NULL);
printf("%s\n", dwValue);
}
RegCloseKey(tmp);
}
}
int main(){
print_list(HKEY_LOCAL_MACHINE, "SOFTWARE");
return 0;
}