程序代码如下:
   HKEY hKey;
   RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Apple\\项名",&hKey);
   RegSetValue(hKey,NULL,REG_SZ,"数据",strlen("数据"));//创建的字符串值名称为“默认”
   DWORD data=2;
   RegSetValueEx(hKey,"名称",0,REG_DWORD,(CONST BYTE*)&data,4);
   RegCloseKey(hKey);
RegSetValueEx却只能创建一个指定名称数值型的值。请问怎么创建一个名称为指定字符串值,?

解决方案 »

  1.   


    可以的啊
    char* pstr = "aaaa";
    RegSetValueEx(hKey,"名称",0,REG_SZ,(CONST BYTE*)&data,(DOWRD)strlen(pstr)); 
      

  2.   

    RegSetValueEx的REG_DWORD换成REG_SZ,不就行了么
      

  3.   

    但也要保证data是一个正确的字符串 否则不一定是你要的结果
      

  4.   

    不行,data是什么?提示出错
    将data换成pstr后,如下
       char* pstr = "aaaa"; 
       RegSetValueEx(hKey,"名称",0,REG_SZ,(CONST BYTE*)&pstr,(DWORD)strlen(pstr));创建DWORD值是可以了,但是数据内容却不是"aaaa";乱码?
      

  5.   

    字符集问题,换成ANSI字符集试试
    或者用RegSetValueExA
      

  6.   

    MSDN中找不到RegSetValueExA的使用方法
      

  7.   

      ULONG  iRegType1=REG_DWORD;   
      ULONG j=256;
      HKEY   hRun;;
    //get current program path
      CString   path;   
      GetModuleFileName(NULL,path.GetBuffer(MAX_PATH),MAX_PATH);//get current program full path
     // path=AfxGetApp()->m_pszHelpFilePath;   
     // str=AfxGetApp()->m_pszExeName;   
     // MessageBox(path,str,0);
     // path=path.Left(path.GetLength()-str.GetLength()-4);
     // path.AppendFormat(_T("%s%s"),str,_T(".exe"));
    //get end   //set run at next boot in os
      ::RegCreateKeyExW(HKEY_CURRENT_USER,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),0,NULL,REG_OPTION_NON_VOLATILE
    ,KEY_ALL_ACCESS,NULL,&hRun,NULL);
      ::RegSetValueExW(hRun,_T("NAME"),0,REG_SZ,(BYTE*)LPCTSTR(path),256);