zoukankan      html  css  js  c++  java
  • MFC操作注册表

    1.创建和修改注册表

     1 BOOL CTestToolCtr::GetHkey(CString strHkey, HKEY& hkey)
     2 {
     3     if (0 == strHkey.CompareNoCase(_T("HKEY_CLASSES_ROOT")))
     4     {
     5         hkey = HKEY_CLASSES_ROOT;
     6     }
     7     else if (0 == strHkey.CompareNoCase(_T("HKEY_CURRENT_CONFIG")))
     8     {
     9         hkey = HKEY_CURRENT_CONFIG;
    10     }
    11     else if (0 == strHkey.CompareNoCase(_T("HKEY_CURRENT_USER")))
    12     {
    13         hkey = HKEY_CURRENT_USER;
    14     }
    15     else if (0 == strHkey.CompareNoCase(_T("HKEY_LOCAL_MACHINE")))
    16     {
    17         hkey = HKEY_LOCAL_MACHINE;
    18     }
    19     else if (0 == strHkey.CompareNoCase(_T("HKEY_USERS")))
    20     {
    21         hkey = HKEY_USERS;
    22     }
    23     else
    24     {
    25         return FALSE;
    26     }
    27     return TRUE;
    28 }
    29 
    30 BOOL CTestToolCtr::CreateKey(CString strHkey, 
                       CString strSubKey,
                       CString strName,
                       CString strValue)
    31 { 32 if (strSubKey.IsEmpty() || strName.IsEmpty() || strValue.IsEmpty()) 33 { 34 return FALSE; 35 }

    38 HKEY hkey; 39 HKEY hNewkey; 40 41 if (!GetHkey(strHkey,hkey)) 42 { 43 return FALSE; 44 } 45 46 DWORD dwDisp; 47 if (ERROR_SUCCESS != RegCreateKeyEx(hkey, strSubKey, NULL, 48 NULL, REG_OPTION_VOLATILE, KEY_ALL_ACCESS, 49 NULL, &hNewkey, &dwDisp)) 50 { 51 return FALSE; 52 } 53 54 if(ERROR_SUCCESS != RegSetValueExA(hNewkey, strName, NULL, 55 REG_SZ, (const BYTE*)strValue.GetBuffer(), 56 strlen(strValue))) 57 { 58 RegCloseKey(hNewkey); 59 return FALSE; 60 } 61 62 RegCloseKey(hNewkey); 63 return TRUE; 64 }

    2. 删除注册表

     1 BOOL CTestToolCtr::DelKey(CString strHkey, CString strSubKey, CString strName)
     2 {
     3     if (strSubKey.IsEmpty() || strName.IsEmpty())
     4     {
     5         return FALSE;
     6     }
    9 HKEY hkey; 10 if (!GetHkey(strHkey,hkey)) 11 { 12 return FALSE; 13 } 14 15 if (SHDeleteValue(hkey,strSubKey,strName) != ERROR_SUCCESS) 16 { 17 return FALSE; 18 } 19 return TRUE; 20 }

    3. 查询注册表

     1 BOOL CTestToolCtr::QueryKey(CString strHkey, 
                     CString strSubKey,
                      CString strName,
                     CString& strValue) 2 { 3 strValue.Empty(); 4 if (strSubKey.IsEmpty() || strName.IsEmpty()) 5 { 6 return FALSE; 7 } 8 9 HKEY hkey; 10 HKEY hNewkey; 11 if (!GetHkey(strHkey,hkey)) 12 { 13 return FALSE; 14 } 15 16 DWORD dwDisp; 17 if (ERROR_SUCCESS != RegCreateKeyEx(hkey, strSubKey, NULL, NULL, 18 REG_OPTION_VOLATILE, KEY_READ, NULL, 19 &hNewkey, &dwDisp)) 20 { 21 return FALSE; 22 } 23 24 char szData[512]; 25 memset(szData, 0, sizeof(szData)); 26 27 DWORD dwLength = sizeof(szData); 28 if (ERROR_SUCCESS != RegQueryValueExA(hNewkey, strName, NULL, NULL, 29 (LPBYTE)szData, &dwLength)) 30 { 31 RegCloseKey(hNewkey); 32 return FALSE; 33 } 34 strValue = szData; 35 RegCloseKey(hNewkey); 36 return TRUE; 37 38 }
    高山流水,海纳百川!
  • 相关阅读:
    Fixed数据类型
    unity3d游戏物体跟着鼠标方向移动
    unity gl 画线
    Unity3D研究院之游戏对象的访问绘制线与绘制面详解(十七)
    像素填充率,纹理填充率,显存带宽
    GPU渲染管线与shader
    Unity协程(Coroutine)原理深入剖析
    C#基本线程同步
    C#多线程编程
    详解C#中的反射
  • 原文地址:https://www.cnblogs.com/ahcc08/p/3690207.html
Copyright © 2011-2022 走看看