有誰知道我如何編程地將註冊表從HKEY_LOCAL_MCAHINE移到HKEY_CURRENT_USER?以編程方式移動註冊表鍵
我寫了一個使用RegEnumKeyEx和RegEnumValue的遞歸函數,但看起來RegEnumValue返回頂級密鑰下的所有值。例如,如果密鑰是HKEY_LOCAL_MACHINE \ SOFTWARE \ MyApp \ KeyName1,並且其下有3個值,並且我有HKEY_LOCAL_MACHINE \ SOFTWARE \ MyApp \ KeyName2並且有2個值。它看起來像RegEnumKeyEx正在返回正確的鍵,但當我爲第一個鍵(即KeyName1)調用RegEnumValue時,我得到所有返回的5個值,而不僅僅是該鍵下的3。
希望一切都有意義......我做錯了什麼?
感謝所有幫助
這裏是一個片段,如果它有助於:
void CArgusApp::RecurseSubKeys(CString csStartKey)
{
CQERegistry reg;
HRESULT hr = reg.Open(HKEY_LOCAL_MACHINE, "SOFTWARE\\" + csStartKey, KEY_QUERY_VALUE);
CStringArray csaDataNames;
reg.GetAllDataNames(csaDataNames);
for (int j = 0; j < csaDataNames.GetSize(); j++)
{
CString csValueName = csaDataNames.ElementAt(j);
TRACE(csStartKey + " - " + csValueName);
}
CStringArray csaKeys;
reg.GetAllSubKeys(csaKeys);
for (int i = 0; i < csaKeys.GetSize(); i++)
{
CString csKey = csaKeys.ElementAt(i);
this->RecurseSubKeys(csStartKey + "\\" + csKey);
}
reg.Close();
}
即GetAllDataNames上面只是簡單地調用RegEnumValue和GetAllSubKeys調用RegEnumKeyEx。