//写入文本 void WriteString(CRegKey &key, CStringW valueName, CStringW value) { key.SetStringValue(valueName, value); } //写入bool void WriteBoolean(CRegKey &key, CStringW valueName, bool value) { WriteString(key, valueName, value ? _T("true") : _T("false")); } //写入DWORD void WriteDWORD(CRegKey &key, CStringW valueName, DWORD value) { key.SetDWORDValue(valueName, value); } //写入注册表 void WriteProps() { CRegKey key; key.Create(HKEY_LOCAL_MACHINE, _T("Software//chain//cpp")); WriteString(key, _T("game"), _T("Kage")); WriteDWORD(key, _T("year"), 1990); WriteBoolean(key, _T("IsPass"), true); } //读取文本 bool ReadString(CRegKey &key, CStringW valueName, CStringW &value) { TCHAR s[_MAX_PATH]; DWORD len = _MAX_PATH; if (key.QueryStringValue(valueName, s, &len)== ERROR_SUCCESS) { value = s; return true; } return false; } //读取bool bool ReadBoolean(CRegKey &key, CStringW valueName, bool &value) { CStringW s; //先读取文本值 if (ReadString(key, valueName, s)) { //判断是否为true value = (CStringW("true").CompareNoCase(s)==0); return true; } return false; } //读取DWORD bool ReadDWORD(CRegKey &key, CStringW valueName, DWORD &value) { DWORD dw; if (key.QueryDWORDValue(valueName, dw)==ERROR_SUCCESS) { value = dw; return true; } return false; } //读取注册表 void ReadProps() { CRegKey key; key.Open(HKEY_LOCAL_MACHINE, _T("Software//chain//cpp")); CStringW game; DWORD year; bool IsPass; ReadString(key, _T("game"), game); ReadDWORD(key, _T("year"), year); ReadBoolean(key, _T("IsPass"), IsPass); _tprintf(_T("游戏名:%s/r/n发行年:%d/r/n是否通关:%s/r/n"), game, year, IsPass? _T("已通关") : _T("未通关")); } int main() { setlocale(LC_ALL, "chs"); WriteProps(); Sleep(100); ReadProps(); return 0; }