Windowsレジストリ操作

11148 ワード

レジストリを頻繁に操作し、操作レジストリ関数を実装します.ここでバックアップします.
#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;

}