C++ 使用c++;

C++ 使用c++;,c++,visual-c++,registry,C++,Visual C++,Registry,我正在处理一个小问题,我想在运行时设置默认目录。因此,我已经实现了下面的代码,尽管它没有给我任何错误,但它仍然不起作用 我已经编写了下面指定的代码。请告诉我代码中的错误是什么 HKEY hKey; LPCTSTR sk = TEXT("Software\\Microsoft\\Internet Explorer\\Main"); LPCTSTR value = TEXT("Default Download Directory"); LPCTSTR newValue = TEXT("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)不是字符串的长度。因此,我用
\u tcslen(newValue)*sizeof(TCHAR)+1更改了代码


&根据Vlad的评论,我已经删除了在
RegSetValueEx

之前执行的
RegCloseKey
语句,因为
newValue
是一个指针,
sizeof(newValue)+1
总是5或9。我已经从其他帖子中更改了代码,
if(RegSetValueEx)(hKey,value,NULL,regu SZ,(LPBYTE&)newValue,sizeof(newValue)+1)!=错误\成功)
但它仍然不起作用。
ERROR\u SUCCESS
表示操作已成功完成。我会尽量澄清:
newValue
是一个指针
sizeof(newValue)
不是字符串的长度,而是指针的大小;4或8。如果复制的代码正常工作,那么它一定使用了数组,而不是指针。尝试
TCHAR newValue[]=…
。您可以使用RegCloseKey(hKey);在调用RegSetValueEx(hKey,…)之前