我正在处理一个小问题,我想在运行时设置默认目录。所以我已经实现了下面的代码,虽然它没有给我任何错误但仍然无法正常工作。
我已经编写了如下所示的代码。请告诉我代码中的错误是什么?
HKEY hKey;
LPCTSTR sk = TEXT("Software\\Microsoft\\Internet Explorer\\Main");
LPCTSTR value = TEXT("Default Download Directory");
LPCTSTR newValue = TEXT("C:\\Users\\USRNAME\\PROJ\\My Files");
LONG lRes = RegOpenKeyEx(HKEY_CURRENT_USER, sk,0, KEY_READ, &hKey);
bool bExistsAndSuccess(lRes == ERROR_SUCCESS);
RegCloseKey(hKey);
if (bExistsAndSuccess)
{
MessageBox(NULL, ptr, _T("bingo, Found you & key"), MB_OK | MB_ICONINFORMATION);
if (RegSetValueEx(hKey, value, 0, REG_SZ, (LPBYTE)newValue, sizeof(newValue)+1) != ERROR_SUCCESS)
{
RegCloseKey(hKey);
MessageBox(NULL, ptr, _T("bingo, success"), MB_OK | MB_ICONINFORMATION);
}
else
{
MessageBox(NULL, ptr, _T("bingo, failure"), MB_OK | MB_ICONINFORMATION);
}
}
else
{
MessageBox(NULL, ptr, _T("bingo, Found you without key"), MB_OK | MB_ICONINFORMATION);
}
它显示了我的宾果游戏,成功消息框但是注册表中的值没有更新。请帮帮我。
答案 0 :(得分:1)
正如molbdnilo所提到的,newValue是一个指针。 sizeof(newValue)不是字符串的长度。所以我用_tcslen(newValue) * sizeof(TCHAR)+1
&安培;根据Vlad的评论,我已删除RegCloseKey
之前执行的RegSetValueEx
语句