HKEY RegKey;
RegKey=NULL;
RegOpenKey (HKEY_CURRENT_USER,
                    "Software\\Microsoft\\Windows\\CurrentVersion\\Ext",
                    &RegKey);
RegSetValueEx(RegKey,"主键",0,REG_SZ,
                     (const unsigned char*)(LPCTSTR)"键值",
                     *" ");上面的代码可以修改注册表,但是如果没有Ext项修改就会失败,请专家帮忙

解决方案 »

  1.   

    那就用添加reg的API先添加一个吧,管他有没有。
      

  2.   

    用regCreateKeyEx()来打开键,如果不存在,则自动创建一个
    参看下面的说明,具体写法我就不多说了吧。
    LONG RegCreateKeyEx( 
            HKEY hKey,        // 主键名称 
            LPCTSTR lpSubKey,     // 子键名称或路径 
            DWORD Reserved,      // 保留,为0 
            LPTSTR lpClass,      // 没弄懂,我设为空也差不多 
            DWORD dwOptions,      
            /* 对你建立的键的一些选项,可以是这些值:REG_OPTION_NON_VOLATILE,REG_OPTION_VOLATILE,REG_OPTION_BACKUP_RESTORE第一个是默认的了。一般用第一个就可以了。*/ 
            REGSAM samDesired,    // 设置你对你建立的这个键的访问权限 
            LPSECURITY_ATTRIBUTES lpSecurityAttributes, 
            PHKEY phkResult,     // 指向你建的句柄 
            LPDWORD lpdwDisposition  //用来查看是打开一个已经有的键,还是新建了键 
          ); 
      返回值:不成功返回非0,成功返回ERROR_SUCCESS. 
      解释:打开指定的键或子键。如果要打开的键不存在的话,本函数会试图建立它。
      

  3.   

    例子: 
       HKEY m_hkey; 
       DWORD dwDisposition; 
       long ret0=(::RegCreateKeyEx 
          (HKEY_CURRENT_USER,"REGD\\",0,NULL, 
          REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&m_hkey,&dwDisposition)); 
       if(ret0!=ERROR_SUCCESS) //如果无法打开hKEY,则终止程序的执行 
       { 
          MessageBox("错误: 无法打开有关的hKEY!"); 
          return; 
       } 
       if(dwDisposition==REG_OPENED_EXISTING_KEY) 
          MessageBox("打开了一个已经存在的键"); 
       else 
       { 
         if(dwDisposition==REG_CREATED_NEW_KEY) 
            MessageBox("建立了一个新键"); 
       } 
       RegClosekey(m_hkey);