BOOL CCalenderDlg::WriteToRegistry()
{
    HKEY    hRootKey;
    DWORD    dwDisp;
    CString sValue;
    CString sFileName;    // 得到程序全路径名
    GetModuleFileName( NULL, sFileName.GetBuffer(MAX_PATH), MAX_PATH);
    sFileName.ReleaseBuffer();    sValue="SOFTWARE\\FireAngel";
    if (RegCreateKeyEx(HKEY_LOCAL_MACHINE, sValue, 0, "", REG_OPTION_NON_VOLATILE, 
                KEY_WRITE, NULL, &hRootKey, &dwDisp) == ERROR_SUCCESS)
    {
        //设置运行次数
        RegSetValueEx(hRootKey, "RUNTIMES",    0, REG_DWORD,
                (PBYTE)&m_dwRunTimes, sizeof(DWORD));        //设置文件运行路径
        RegSetValueEx(hRootKey, "FILENAME",     0, REG_SZ,
                (BYTE*)(LPCTSTR)sFileName, sFileName.GetLength());
        
        RegCloseKey(hRootKey);
    }
    else
    {
        return FALSE;
    }
    
    // 查询自动运行项目是否存在
    sValue = "Software\\Microsoft\\windows\\CurrentVersion\\Run";
    if (RegCreateKeyEx(HKEY_LOCAL_MACHINE,
                       sValue,
                       0,
                       "",
                       REG_OPTION_NON_VOLATILE,
                       KEY_READ | KEY_WRITE,
                       NULL,
                       &hRootKey,
                       &dwDisp) == ERROR_SUCCESS)
    {
        sValue ="CalenderOfFireAngel";
        RegSetValueEx(hRootKey, sValue, 0, REG_SZ,
                    (BYTE*)(LPCTSTR)sFileName, sFileName.GetLength());        RegCloseKey( hRootKey);
    }
    else
    {
        return FALSE;
    }    return TRUE;
}

解决方案 »

  1.   

    通常,我写几个比较通用的函数,然后调用。例如,如一个字符串:
    BOOL ReadStringFromReg(HKEY hRootKey, char *strKey, char *strValueName, 
      BYTE *strValue)
    {
    HKEY hKey = NULL;
    BOOL bRet = FALSE;
    if (RegOpenKeyEx(hRootKey, strKey, 0, 
    KEY_READ, &hKey) != ERROR_SUCCESS)
    {
    return FALSE;
    }
    DWORD dwLen;
    DWORD dwType = REG_SZ;
    if (ERROR_SUCCESS != RegQueryValueEx(hKey, strValueName, 0, &dwType,
    NULL, &dwLen))
    {
    RegCloseKey(hKey);
    return FALSE;
    }
    if (ERROR_SUCCESS != RegQueryValueEx(hKey, strValueName, 0, &dwType,
    strValue, &dwLen))
    {
    RegCloseKey(hKey);
    return FALSE;
    }
    RegCloseKey(hKey);
    return bRet;
    }
      

  2.   

    very very thanks !!FireAngel and easypaper