首页 > 其他分享 >(C语言)实现对注册表创建修改,查询,删除操作的简单操作(省略版)

(C语言)实现对注册表创建修改,查询,删除操作的简单操作(省略版)

时间:2023-03-06 22:14:25浏览次数:363  
标签:HKEY hKey 注册表 C语言 char SubKey Valuename 操作


前言

本文为省略版直接贴代码,用就完事了,下文三个方法都为独立模块可以单独调用,详细步骤版在这,点击跳转

一、代码实现

#include <stdio.h>
#include <Windows.h>

// 删除注册表值,不存在则退出 
void DeleteReg(HKEY RootKey,const char* SubKey,const char* Valuename){
    HKEY hKey;//句柄
    long ORet = RegOpenKeyEx(RootKey,SubKey,0,KEY_ALL_ACCESS,&hKey);
    if (ORet != ERROR_SUCCESS){
        printf("无效的路径:%s-%s\n",SubKey,Valuename);
        return;
    }else{
        //long DReg = RegDeleteKey(RootKey,SubKey);  //这个是直接删除子键(要求子键下面没有其他子键) 
        long DReg = RegDeleteValue(hKey,Valuename);
        if (DReg == ERROR_SUCCESS){
            printf("删除子键%s中的值%s\n",SubKey,Valuename);
            printf("删除成功\n");
        }
        RegCloseKey(hKey);
        getchar();
        return;
    }
}

// 创建/修改注册表值与数据 
void CreateReg(HKEY RootKey,const char* SubKey,const char* Valuename,const char* Data)
{
    HKEY hKey;//句柄
    //创建值 
    long CReg = RegCreateKeyEx(RootKey,SubKey,0,NULL,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hKey,NULL);
    if (CReg == ERROR_SUCCESS)
    {
        //设置值的数据 
        printf("设置值与数据为(值:数据):\n%s:%s\n", Valuename,Data);
        long SRet = RegSetValueEx(hKey,Valuename, 0, REG_SZ, (BYTE*)Data, strlen(Data));
        if (SRet == ERROR_SUCCESS)
        {
            printf("设置成功!\n");
        }
    }
    RegCloseKey(hKey);
    getchar();
    return;
}

//查询子健的值的数据 
void QueryReg(HKEY RootKey,const char* SubKey,const char* Valuename){
    HKEY hKey;//句柄
    DWORD size=ULONG_MAX;	//数据缓存大小
    char buf[UCHAR_MAX];	//用于接收查询到的值的变量
    long ORet = RegOpenKeyEx(RootKey,SubKey,0,KEY_ALL_ACCESS,&hKey);
    if (ORet != ERROR_SUCCESS){
        printf("无效的路径:%s-%s\n",SubKey,Valuename);
        return;
     }else{
        long QRet = RegQueryValueEx(hKey,Valuename,0,NULL,(BYTE*)buf, &size);
        printf("查询结果(值:数据):\n%s:%s\n",Valuename,buf);
        RegCloseKey(hKey);
        getchar();
        return;
    }
}

int main(int argc,char *argv[])
{
	//创建或修改值与数据
	//CreateReg(根键,子键,值,数据);
	CreateReg(HKEY_CURRENT_USER,"SOFTWARE\\1demo\\cs","vlauename","data");
	
	//查询值的数据 
	//QueryReg(根键,子键,值);
    	QueryReg(HKEY_CURRENT_USER,"SOFTWARE\\1demo\\cs","vlauename");
    
	//删除值 
	//DeleteReg(根键,子键,值);
	DeleteReg(HKEY_CURRENT_USER,"SOFTWARE\\1demo\\cs","vlauename"); 
	
	return 0;
}

二、实现效果

①注册表初始状态

②执行CreateReg方法创建

③执行QueryReg方法查询

④执行DeleteReg方法删除

文章参考


本文旨在用C实现简单的注册表操作,并作为模板方便改写使用,本人学识浅薄,第一次做博客,理解的不够深入,代码比较粗糙,还请见谅。

END

标签:HKEY,hKey,注册表,C语言,char,SubKey,Valuename,操作
From: https://www.cnblogs.com/Rrea/p/17184964.html

相关文章