我要给注册表的某项写值,但RegSetValueEx()老是返回失败!~代码如下,请高人指点下,我真是没辙了~
LONG lnRes;
HKEY hKey;
DWORD dwSize=sizeof(DWORD);
DWORD dwWidth,dwHeight;
dwWidth=(DWORD)(1111);
lnRes=RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\**公司\\**工作站\\DefaultFilmPixSize",0,KEY_READ,&hKey);
if(lnRes==ERROR_SUCCESS)
{
AfxMessageBox("注册表打开成功·!");
lnRes=RegSetValueEx(hKey,"14INX17IN_Width",0,REG_DWORD,(const BYTE *)&dwWidth,sizeof(DWORD)); if(lnRes==ERROR_SUCCESS)
{
AfxMessageBox("注册表已成功修改·!");
}
else
{
AfxMessageBox("注册表修改失败·!");
}
}
else 
{
AfxMessageBox("注册表打开失败·!");
}

解决方案 »

  1.   

    lnRes=RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\**公司\\**工作站\\DefaultFilmPixSize",0,KEY_READ,&hKey);
    //////
    KEY_READ 改为 KEY_READ|KEY_WRITE
      

  2.   

    同意楼上,
    RegOpenKeyEx用KEY_READ 打开的方式不允许写操作
      

  3.   

    楼主试试这样:
    LONG lnRes;
    HKEY hKey;
    DWORD dwDisposition;
    DWORD dwSize=sizeof(DWORD);
    DWORD dwWidth,dwHeight;
    dwWidth=(DWORD)(1111);
    lnRes=RegOpenKeyEx(HKEY_CURRENT_USER,"Software\\**公司\\**工作站\\DefaultFilmPixSize",0,KEY_READ,&hKey);
    if(lnRes==ERROR_SUCCESS)
    {
    AfxMessageBox("注册表打开成功·!");
    lnRes = 0;  //这里返回值要初期化
    if(!RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\**公司\\**工作站\\DefaultFilmPixSize", 0, "",REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &hKey, &dwDisposition))
    {
    lnRes=RegSetValueEx(hKey,"14INX17IN_Width",0,REG_DWORD,(const BYTE *)&dwWidth,sizeof(DWORD));
    }
    if(lnRes==ERROR_SUCCESS)
    {
    AfxMessageBox("注册表已成功修改·!");
    }
    else
    {
    AfxMessageBox("注册表修改失败·!");
    }
    }
    else 
    {
    AfxMessageBox("注册表打开失败·!");
    }