2010-10-18 49 views
0

我想通過閱讀「Software \ Microsoft \ NET Framework Setup \ NDP \ v3.5」鍵的「安裝」值來檢查.NET 3.5 Framework是否已安裝。我很高興地發現有一個MFC類CSettingStore可以輕鬆完成這項工作,但是我發現CSettingStore.Open總是返回false。MFC - 使用CSettingStore打開註冊表項的問題

的代碼如下:

bool bOpen = reg.Open(_T("Software\\Microsoft\\NET Framework Setup\\NDP\\v3.5")); 
if (bOpen && reg.Read (_T("Install"), dwInstall)) 
{ 
    return dwInstall == 1; 
} 

在這種情況下,reg.Open總是返回false。

代碼有問題嗎?

+0

你能說明你如何構造'reg'對象? – usta 2010-10-18 05:47:54

+0

CSettingsStore reg(FALSE,TRUE); – 2010-10-18 06:09:39

回答

1

http://msdn.microsoft.com/en-us/library/bb982796.aspx我讀:

<quote> 

bAdmin含義逆轉 其實,如果bAdmin是真實的,關鍵是HKEY_LOCAL_MACHINE並且,如果是假的,關鍵是HKEY_CURRENT_USER。您可以在afxsettingsstore.cpp看到自己這一點:

CSettingsStore::CSettingsStore(BOOL bAdmin, BOOL bReadOnly) : 
m_bReadOnly(bReadOnly), m_bAdmin(bAdmin), m_dwUserData(0) 
{ 
m_reg.m_hKey = bAdmin ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER; 
} 

</quote> 

所以它看起來像一個文檔錯誤。 CSettingsStore reg (TRUE, TRUE);工作更好嗎?

+0

非常感謝喲。確切地說是文檔錯誤。我現在使用CSettingsStore reg(TRUE,TRUE),它可以工作。 – 2010-10-19 03:22:24