[英]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.