首页 > OOP语言 > VC++ > 正文

VC中对注册表进行操作
2013-06-02 00:00:00   来源:www.bianceng.cn   评论:0 点击:

暂时无描述信息

近来由于需要在自己写的程序中对注册表进行操作。总结些经验,并做个一个DEMO供日后使用,现在把它拿出来和大家分享…

为了使用方便,把一些操作写成了函数,以便方便调用,具体代码如下所示:

一、定义

HKEY hKey;   
char content[256];      //所查询注册表键值的内容   
DWORD dwType=REG_SZ;        //定义读取数据类型   
DWORD dwLength=256;   
struct HKEY__*RootKey;      //注册表主键名称   
TCHAR *SubKey;          //欲打开注册表项的地址   
TCHAR *KeyName;         //欲设置项的名字   
TCHAR *ValueName;       //欲设置值的名称   
LPBYTE SetContent_S;        //字符串类型   
int SetContent_D[256];      //DWORD类型   
BYTE SetContent_B[256];     //二进制类型   

int ShowContent (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName);   
int SetValue_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S);   
int SetValue_D (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,int ReSetContent_D[256]);   
int SetValue_B (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,BYTE ReSetContent_B[256]);   
int DeleteKey (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReKeyName);   
int DeleteValue (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName);

二、查看函数

ShowContent (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName)   
{   
    int i=0;    //操作结果:0==succeed   
    if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_READ,&hKey)==ERROR_SUCCESS)   
    {   
        if(RegQueryValueEx(hKey,ReValueName,NULL,&dwType,(unsigned char *)content,&dwLength)!=ERROR_SUCCESS)   
        {   
            AfxMessageBox("错误:无法查询有关的注册表信息");   
            i=1;   
        }   
        RegCloseKey(hKey);   
    }   
    else
    {   
        AfxMessageBox("错误:无法打开有关的hKEY");   
        i=1;   
    }   
    return i;   
}

三、设置字符串值函数

SetValue_S (struct HKEY__*ReRootKey,TCHAR *ReSubKey,TCHAR *ReValueName,LPBYTE ReSetContent_S)   
{   
    int i=0;    //操作结果:0==succeed   
    //int StrLength;   
    //StrLength=CString(SetContent_S).GetLength();   

    if(RegOpenKeyEx(ReRootKey,ReSubKey,0,KEY_WRITE,&hKey)==ERROR_SUCCESS)   
    {   
        if(RegSetValueEx(hKey,ReValueName,NULL,REG_SZ,ReSetContent_S,CString(SetContent_S).GetLength())!=ERROR_SUCCESS)   
        {   
            AfxMessageBox("错误:无法设置有关的注册表信息");   
            i=1;   
        }   
        RegCloseKey(hKey);   
    }   
    else
    {   
        AfxMessageBox("错误:无法查询有关的注册表信息");   
        i=1;   
    }   
    return i;   
}

相关热词搜索:

上一篇:VC读注册表获取安装程序
下一篇:VC调用外部程序接口

分享到: 收藏