繁体   English   中英

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

[英]Change the default browser value using c++

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

在此处输入图片说明

我写了下面指定的代码。 请让我知道代码中的错误是什么?

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

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

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

根据弗拉德的评论,我已经删除了RegCloseKey语句,该语句在RegSetValueEx之前RegSetValueEx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM