我想做一個函數,列出特定(Windows註冊表)鍵的所有子項。RegEnumKeyEx無法正常工作
發生什麼事是隻有第一項被正確輸出,所有其他項被截斷或重複 - 我認爲這是一個緩衝區問題。
我已經閱讀過功能文檔,但它對我沒有太大的幫助。
下面的代碼:
#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;
}
將錯誤檢查添加到此代碼。 *全部* winapi功能。 – 2012-08-03 20:18:07
如果對該類型使用錯誤的符號,匈牙利語不會對您有所幫助。 dwValue和dwSize。一個是字符串,另一個是DWORD ... – 2012-08-03 20:20:32