在学习注册表操作,但写入的是乱码,请问怎么解决,代码如下,谢谢!!void CRegisterTestView::OnRegWrite()
{
// TODO: Add your command handler code here
HKEY hKey = NULL;
HKEY hCompanyKey = NULL;
DWORD dw;
RegCreateKeyEx(HKEY_CURRENT_USER,
           _T("Software\\Purplesoft\\Info"),
   0,
   REG_NONE,
   REG_OPTION_NON_VOLATILE,
   KEY_READ | KEY_WRITE,
   NULL,
   &hCompanyKey, 
   &dw); RegSetValueEx(hCompanyKey,
          _T("Name"),
  0,
  REG_SZ,
  (BYTE*)Organization,
  (sizeof(Organization)/sizeof(Organization[0]) + 1)*sizeof(CHAR));
RegCloseKey(hKey);}

解决方案 »

  1.   

    你的Organization中保存的是什么内容?Debug下看一下
      

  2.   

    忘写了以下两行代码,加上了还是不行。Debug时,Organization里已经赋上值了。
    CHAR Organization[100];
    strcpy(Organization, "ZengPurple");
      

  3.   

    搞定了!
    修改后的代码在这里:void CRegisterTestView::OnRegWrite()
    {
    // TODO: Add your command handler code here
    HKEY hCompanyKey = NULL;
    DWORD dw;
    LPCTSTR RegValueBuffer = _T("ZengPurple");//这是修改后的代码!! DWORD dwAge = 30; RegCreateKeyEx(HKEY_CURRENT_USER,
               _T("Software\\Purplesoft\\Info"),
       0,
       REG_NONE,
       REG_OPTION_NON_VOLATILE,
       KEY_ALL_ACCESS,
       NULL,
       &hCompanyKey, 
       &dw); RegSetValueEx(hCompanyKey,
    _T("Name"),
    0,
    REG_SZ,
    (CONST BYTE*)RegValueBuffer,
    (lstrlen(RegValueBuffer) + 1)*sizeof(TCHAR));//这也做了修改
    RegCloseKey(hCompanyKey);}
      

  4.   

    TCHAR Organization[100];
    _tcscpy(Organization, _T("ZengPurple"));
     (sizeof(Organization)/sizeof(Organization[0]) + 1)*sizeof(CHAR)
    改成_tcslen(Organization)*sizeof(TCHAR)+sizeof(TCHAR)