技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 1160|回复: 0
收起左侧

删除含有子KEY的KEY(WIN32API纯C语言版)

[复制链接]

34

主题

138

帖子

7126

积分

用户组: 管理员

UID
77
精华
11
威望
112 点
宅币
6580 个
贡献
129 次
宅之契约
0 份
在线时间
105 小时
注册时间
2014-2-22
发表于 2014-4-7 17:15:06 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
本帖最后由 美俪女神 于 2014-4-8 17:33 编辑

[C] 纯文本查看 复制代码
DWORD RegDeleteKeys(HKEY RootKey, const char *pSubKey, bool InitVar)
{
    HKEY hKey;
    DWORD nRet,NameCnt,NameMaxLen,KeyCnt,KeyMaxLen,MaxDateLen;
    static int dwDeep = -1;
    if(InitVar)
        dwDeep = -1;
    else
        dwDeep++;
    nRet=RegOpenKeyEx(RootKey,pSubKey,0,KEY_ALL_ACCESS,&hKey);
    if(nRet!=ERROR_SUCCESS)
    {
        return 0;
    }
    nRet = RegQueryInfoKey(hKey,NULL,NULL,NULL,&KeyCnt,&KeyMaxLen,NULL,&NameCnt,&NameMaxLen,&MaxDateLen,NULL,NULL);
    if(nRet == ERROR_SUCCESS)
    {
        for(int dwIndex = KeyCnt - 1; dwIndex >= 0; dwIndex--)  //枚举键值
        {
            char sKeyName[256] = {0}, pSubKeyTemp[256] = {0};
            RegEnumKey(hKey, dwIndex, sKeyName, sizeof(sKeyName));
            HKEY hKeySub;
            DWORD KeyCntSub;
            strcpy(pSubKeyTemp, pSubKey);
            strcat(pSubKeyTemp, "\\");
            strcat(pSubKeyTemp, sKeyName);
            nRet = RegOpenKeyEx(RootKey,pSubKeyTemp,0,KEY_ALL_ACCESS,&hKeySub);
            if(nRet == ERROR_SUCCESS)
            {
                nRet = RegQueryInfoKey(hKeySub,NULL,NULL,NULL,&KeyCntSub,&KeyMaxLen,NULL,&NameCnt,&NameMaxLen,&MaxDateLen,NULL,NULL);
                if(nRet == ERROR_SUCCESS)
                {
                    if (KeyCntSub != 0)
                    {
                        RegDeleteKeys(RootKey, pSubKeyTemp,0);
                    }
                    RegCloseKey(hKeySub);
                }
            }
            RegDeleteKey(RootKey ,pSubKeyTemp);
        }
        RegCloseKey(hKey);
    }
    RegDeleteKey(RootKey ,pSubKey);
    return 0;
}
测试:
[C] 纯文本查看 复制代码
RegDeleteKeys(HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet001\\services\\WIN64AST",1);
RegDeleteKeys(HKEY_LOCAL_MACHINE,"SYSTEM\\ControlSet002\\services\\WIN64AST",1);

评分

参与人数 1威望 +1 宅币 +10 贡献 +10 收起 理由
0xAA55 + 1 + 10 + 10 支持!

查看全部评分

本帖被以下淘专辑推荐:

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号|网站地图

GMT+8, 2019-6-16 09:38 , Processed in 0.101260 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表