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

    经常操作注册表,然后得到一份操作注册表函数实现。这里备份下。

    #ifndef _REGEDIT_H
    #define _REGEDIT_H
    
    int RegRead_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,TCHAR *Content, DWORD nLength);
    int RegRead_D (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,BYTE *Content, DWORD nLength);
    int RegSetValue_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S);
    int RegSetValue_D (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S);
    int RegSetValue_B (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,BYTE ReSetContent_B[256]);
    int RegDeleteKey (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReKeyName);
    int RegDeleteValue (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName);
    
    
    #endif
    #include "StdAfx.h"
    #include "regedit.h"
    
    int RegRead_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,TCHAR *Content, DWORD nLength)
    {
        HKEY hKey;
        int i=0;    //操作结果:0==succeed
        DWORD dwType = REG_SZ;
        DWORD dwLength = nLength;
        if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_READ,&hKey)==ERROR_SUCCESS)
        {
            if(RegQueryValueEx(hKey,ReValueName,NULL,&dwType,(LPBYTE)Content,&dwLength)!=ERROR_SUCCESS)
            {
                i=1;
            }
            RegCloseKey(hKey);
        }
        else
        {
            i=1;
        }
        return i;
    }
    
    int RegRead_D (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,BYTE *Content, DWORD nLength)
    {
        HKEY hKey;
        int i=0;    //操作结果:0==succeed
        DWORD dwType = REG_DWORD;
        DWORD dwLength = nLength;
        if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_READ,&hKey)==ERROR_SUCCESS)
        {
            if(RegQueryValueEx(hKey,ReValueName,NULL,&dwType,(LPBYTE)Content,&dwLength)!=ERROR_SUCCESS)
            {
                i=1;
            }
            RegCloseKey(hKey);
        }
        else
        {
            i=1;
        }
        return i;
    }
    
    int RegSetValue_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S)
    {
        int i=0;    //操作结果:0==succeed
        HKEY hKey;
        if(RegCreateKeyEx(ReRootKey,ReSubKey,0,NULL,NULL,KEY_ALL_ACCESS,NULL,&hKey,NULL)==ERROR_SUCCESS)
        {
            int nLen = _tcslen((TCHAR*)ReSetContent_S);
            if(RegSetValueEx(hKey,ReValueName,NULL,REG_SZ,ReSetContent_S,nLen*sizeof(TCHAR)+1)!=ERROR_SUCCESS)
            {
                i=1;
            }
            RegCloseKey(hKey);
        }
        else
        {
            i=1;
        }
        return i;
    }
    
    int RegSetValue_D (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_D)
    {
        int i=0;    //操作结果:0==succeed
        HKEY hKey;
        if(RegCreateKeyEx(ReRootKey,ReSubKey,0,NULL,NULL,KEY_ALL_ACCESS,NULL,&hKey,NULL)==ERROR_SUCCESS)
        {
            if(RegSetValueEx(hKey,ReValueName,NULL,REG_DWORD,(LPBYTE)ReSetContent_D,sizeof(DWORD))!=ERROR_SUCCESS)
            {
                i=1;
            }
            RegCloseKey(hKey);
        }
        else
        {
            i=1;
        }
        return i;
    }
    
    int RegSetValue_B (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,BYTE ReSetContent_B[256])
    {
        int i=0;    //操作结果:0==succeed
        HKEY hKey;
        if(RegCreateKeyEx(ReRootKey,ReSubKey,0,NULL,NULL,KEY_ALL_ACCESS,NULL,&hKey,NULL)==ERROR_SUCCESS)
        {
            if(RegSetValueEx(hKey,ReValueName,NULL,REG_BINARY,(LPBYTE)ReSetContent_B,sizeof(DWORD))!=ERROR_SUCCESS)
            {
                i=1;
            }
            RegCloseKey(hKey);
        }
        else
        {
            i=1;
        }
        return i;
    }
    
    int RegDeleteKey (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReKeyName)
    {
        int i=0;    //操作结果:0==succeed
        HKEY hKey;
        if((RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey))==ERROR_SUCCESS)
        {
            if((RegDeleteKey(hKey,ReKeyName))!=ERROR_SUCCESS)
            {
                i=1;
            }
            RegCloseKey(hKey);
        }
        else
        {
            i=1;
        }
        return i;
    }
    
    int RegDeleteValue (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName)
    {
        int i=0;    //操作结果:0==succeed
        HKEY hKey;
        if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)
        {
            if(RegDeleteValue(hKey,ReValueName)!=ERROR_SUCCESS)
            {
                i=1;
            }
            RegCloseKey(hKey);
        }
        else
        {
            i=1;
        }
        return i;
    }
  • 相关阅读:
    Linux 改变文件的所有者
    Opencv -lippicv
    数据结构--二叉搜索树
    Window下cmd查看目录结构
    windows cmake与nmake
    Ubuntu18.04安装caffe python3.6 opencv3.2 CPU
    apt-get install 下载速度慢问题的解决
    使用pip安装速度慢问题的解决
    神经网络可视化
    【VS】代码行无法折叠及ctrl+鼠标左键无法跳转到定义的问题
  • 原文地址:https://www.cnblogs.com/monotone/p/3993338.html
Copyright © 2011-2022 走看看