zoukankan      html  css  js  c++  java
  • windows 浅析-读写注册表

    简单叙述一下windows注册表的使用:

    本文叙述问宽字版,一般逻辑为:

    1、

      RegOpenKeyExW---------->RegCreateKeyW---------------->RegSetValueExW

      打开注册表        创建key          写入键值对

    2、

      RegOpenKeyExW---------------->RegSetValueExW

      打开注册表           写入键值对

    3、

      RegOpenKeyExW---------->RegDeleteValueW

      打开注册表        删除键值

    4、

      RegOpenKeyExW---------->RegQueryValueExW

      打开注册表        查询键值对

    api解析搬运msdn:

    打开注册表

    LSTATUS RegOpenKeyExW( HKEY hKey,

                   LPCWSTR lpSubKey,

                   DWORD ulOptions,

                   REGSAM samDesired,

                   PHKEY phkResult );

    创建键值

    LSTATUS RegCreateKeyExW( HKEY hKey,

                  LPCWSTR lpSubKey,

                  DWORD Reserved,

                  LPWSTR lpClass,

                  DWORD dwOptions,

                     REGSAM samDesired,

                  const LPSECURITY_ATTRIBUTES lpSecurityAttributes,

                  PHKEY phkResult,

                  LPDWORD lpdwDisposition );

    查询键值

    LSTATUS RegQueryValueExW( HKEY hKey,

                   LPCWSTR lpValueName,

                   LPDWORD lpReserved,

                   LPDWORD lpType,

                   LPBYTE lpData,

                   LPDWORD lpcbData );

    删除键值

    LSTATUS RegDeleteValueW( HKEY hKey,

                   LPCWSTR lpValueName );

    此处举例子创建:【其他操作大同小异,注意异常以及对应字符串长度即可.】

      HKEY hKey = 0;
      DWORD nLength = 0;
      WCHAR value[] = { _T("fuck233333") };

      DWORD ret = ::RegOpenKeyExW(HKEY_CURRENT_USER, _T("Software\Tencent\QQ"), 0, KEY_SET_VALUE, &hKey);

      if (ret != ERROR_SUCCESS)
       {
        cout << "open regedit error with: " << GetLastError() << endl;
        return 0;
        }

      ret = ::RegCreateKeyW(hKey, _T("Alves"), &hKey);
      if (ret)
       {
        std::cout << "add key error with:" << ret << std::endl;
       }  

      nLength = (lstrlen(value) + 1) * sizeof(WCHAR);;
      ret = RegSetValueExW(hKey,
                  _T("debugSwitch"),
                   0,
                  REG_SZ,
                  (BYTE*)(value),
                  nLength);
      if (ret)
      {
        std::cout << "add key error with:" << ret << std::endl;
      }
      return 0;

  • 相关阅读:
    hibernate入门
    struts文件上传
    Struts的增删改查
    struts入门
    Maven配置以及环境搭配
    layui增删改查
    easyui三
    A
    C. Permutation Cycle
    E
  • 原文地址:https://www.cnblogs.com/liuruoqian/p/13081370.html
Copyright © 2011-2022 走看看