什麼代碼添加到這個函數工作好? (ERROR_SUCCESS)RegQueryValueEx - 這個函數添加了什麼代碼來顯示ERROR_SUCCESS
我有代碼,檢查註冊表中的值。
功能RegQueryValueEx
是bug。 當oldValue
是幾個字母比newValue
更長,功能顯示ERROR_MORE_DATA
,但我想要想ERROR_SUCCESS
什麼代碼添加到這個功能做到這一點?
void function(string newValue, string key, string name)
{
// string key - key in registry, ie Myapp\\Options
// string name - name in registry
// string newValue - data in REG_SZ
string oldValue;
DWORD keytype = REG_SZ;
HKEY keyHandle;
DWORD size = sizeof(string);
if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, key.c_str(),0L,KEY_ALL_ACCESS,&keyHandle) == ERROR_SUCCESS)
{
LONG isgood = RegQueryValueEx(keyHandle, name.c_str(), 0, &keytype, (LPBYTE)&oldValue, &size);
if(isgood == ERROR_MORE_DATA)
{
cout << "Error more data\n";
}
if(isgood == ERROR_SUCCESS)
{
cout << "Old data is " << oldValue.c_str() << endl;
cout << "New data is " << newValue.c_str() << endl;
if(strcmp(newValue.c_str(), oldValue.c_str()) != 0) // compare 2 strings, if
{
cout << "String 1 and string 2 are different";
}
else
{
cout << "String 1 and string 2 are the same";
}
}
if(isgood == ERROR_FILE_NOT_FOUND)
{
cout << "Name in registry not found!";
}
}
}
謝謝賈斯汀·格蘭特爲完整的代碼,我現在知道我做錯了:* – Jasmin25 2009-10-04 01:44:39
但當我添加到註冊表數據「foo」和運行此程序用新的數據「富」它表明: 舊數據foo 新數據爲foo 字符串1和字符串2不同 但foo和foo的值相同。 如何更改此代碼以使其運行良好? – Jasmin25 2009-10-04 02:09:20
不確定。也許其中一個字符串包含空終止符字符,而其中一個字符串沒有,導致長度不同?在任何情況下,請逐字逐個查看字符串,然後找出它們的不同之處以及如何解決問題。 – 2009-10-04 02:35:33