使用c ++更改默认浏览器值

时间:2015-09-01 07:05:58

标签: c++ visual-c++ registry

我正在处理一个小问题,我想在运行时设置默认目录。所以我已经实现了下面的代码,虽然它没有给我任何错误但仍然无法正常工作。

enter image description here

我已经编写了如下所示的代码。请告诉我代码中的错误是什么?

    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);
    }

它显示了我的宾果游戏,成功消息框但是注册表中的值没有更新。请帮帮我。

1 个答案:

答案 0 :(得分:1)

正如molbdnilo所提到的,newValue是一个指针。 sizeof(newValue)不是字符串的长度。所以我用_tcslen(newValue) * sizeof(TCHAR)+1

更改了代码

&安培;根据Vlad的评论,我已删除RegCloseKey之前执行的RegSetValueEx语句