特定の(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;
}