主要代码如下
是REG_SZ的val="M/d/yyyy";
ret1 = ::RegSetValueEx(hKey, "sShortDate",NULL, REG_SZ,(BYTE*)val,sizeof(val));
if(ret1 != ERROR_SUCCESS)
{
::SetDlgItemText(hwnd,IDC_EDIT1,"错误:无法修改注册表信息"); 
}val="dddd, MMMM dd, yyyy";
ret1 = ::RegSetValueEx(hKey, "sLongDate",NULL, REG_SZ,(BYTE*)val,sizeof(val));
if(ret1 != ERROR_SUCCESS)
{
::SetDlgItemText(hwnd,IDC_EDIT1,"错误:无法修改注册表信息"); 
}第一个 修改后成了 M/d/
而不是 M/d/yyyy第二个也差不多 也只有前面 的一部分

解决方案 »

  1.   

    顶一下是 sizeof(val) 的问题但是不知道为什么
      

  2.   

    val="M/d/yyyy";这样写编译时难道不提示有错误或者警告吗?
    val="M//d//yyyy";应该是这样吧.不过sizeof确实可能有错
      

  3.   

    显然sizeof(val) 只是val指针的长度
      

  4.   

    你的val是个char*的指针吧,这样的话sizeof(val)返回的值是指针的长度,不管字符串有多长,返回固定为4个,这样当然只会写入头4个字符了。
      

  5.   

    把val改为char []或别的字符串类型试试。我不会祝你成功的,因为一定会成功的,哇哈哈......