2013-10-08 45 views

回答

2

唯一的方法是枚舉值爲RegEnumValue(),並使用RegDeleteValue()單獨刪除它們。

或者如果密鑰沒有任何子密鑰,只需遞歸刪除整個密鑰,然後重新創建父密鑰。

編輯:這是一個基本的例程來說明如何枚舉和刪除鍵中的值(它只有最小的錯誤檢查)。

DWORD dwNumValues, dwValueNameLen; 
if (RegQueryInfoKey(hKey, 0, 0, 0, 0, 0, 0, 
    &dwNumValues, &dwValueNameLen, 0, 0, 0) == ERROR_SUCCESS) 
{ 
    TCHAR* tchValName = new TCHAR[dwValueNameLen + 1]; 
    for (int i = dwNumValues - 1; i >= 0; --i) 
    { 
     DWORD dwLen = dwValueNameLen + 1; 
     if (RegEnumValue(hKey, i, tchValName, &dwLen, 0, 0, 0, 0) == ERROR_SUCCESS) 
      RegDeleteValue(hKey, tchValName); 
    } 
    delete[] tchValName; 
} 
+0

非常感謝Jonathan。我是否認爲我必須做一個For或者While來加入這兩個功能。我對嗎? –

+0

我已經添加了一些如何枚舉和刪除值的示例代碼。 –

+0

太棒了!非常感謝! –