如何取得注册表中指定键中的值(字符串)?

解决方案 »

  1.   

    用RegQueryValueEx函数
    HKEY hKey;
    LPCTSTR data = "SoftWare\\Microsoft\\....";
    long ret = ::RegOpenEx(HKEY_LOCAL_MACHINE,data,0,KEY_READ,&hKey);
    if(ret!=ERROR_SUCCESS)
    {
       AfxMessageBox("Error!");
       return;
    }
    long ret1 = ::RegQueryValueEx(hKey,"your find information",NULL,你的数据类型,要返回的查询的数据,数据长度);
    .......
    RegCloseKey(hKey);
      

  2.   


    这是我编的一个通用的修改注册表以使得开机即运行本程序的函数,
    不用修改任何代码,就可以在你的程序中运行,(可以在
    InitInstance()中调用)
    BOOL CVoiceBoardApp::RegisterToAutoRun()
    {
    //Define Varible
    HKEY  hKEY;
    char  CurrentPath[MAX_PATH];
             long  ret;
    LPSTR FileCurrentExeName;
    DWORD type=REG_SZ;
    DWORD size=MAX_PATH;
    LPCTSTR Rgspath="Software\\Microsoft\\Windows\\CurrentVersion\\Run" ;
       GetModuleFileName(NULL,CurrentPath,size);

    FileCurrentExeName = CurrentPath; //Open key
    ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,Rgspath,0,KEY_WRITE, &hKEY);
    if(ret!=ERROR_SUCCESS)


    RegCloseKey(hKEY);
    return FALSE;
    } //Set Key
    ret=RegSetValueEx(hKEY,"SuQiEr",NULL,type,(const unsigned char*)FileCurrentExeName,size);
    if(ret!=ERROR_SUCCESS)
    {  RegCloseKey(hKEY);
    return FALSE;
    }
    RegCloseKey(hKEY); return TRUE;
    }
      

  3.   

    CRegKey m_regkey;
    m_regkey.Create(HKEY_LOCAL_MACHINE,"SOFTWARE\\...\\...");
    DWORD kkk = 40;
    m_regkey.QueryValue(sFontName, "字体",&kkk);
    m_regkey.Close();