Python删除注册表下的某个文件,哈哈原创代码献上,大家多多支持哈

打开注册表方法:在命令行输入 regedit。

我在这个位置底下创建一个名字叫Bentley的键(注册表中好像叫键,看起来像文件夹)

这个文件的权限必须是完全控制的,不然python无法访问这个文件。设置文件问完全控制,所有的用户。(我个人想法)

然后给文件加上其他子项。我们在安装软件时,这个文件底下会有很多其他的子项。

接下来是python代码:其中_winreg不知道为啥pip不下来,我用了pypiwin32包。里面包含了需要的

win32api, win32con的模块.
 
import win32api, win32con
import os

global reg_root
reg_root= win32con.HKEY_LOCAL_MACHINE   #这个是必须的,而且只能是目录计算机底下那几个子项

global reg_flags
reg_flags = win32con.WRITE_OWNER|win32con.KEY_WOW64_64KEY|win32con.KEY_ALL_ACCESS #这个自己百度

reg_path = "SOFTWARE\WOW6432Node\Bentley"#具体到路径

try:
    key = win32api.RegOpenKeyEx(reg_root, reg_path, 0, reg_flags) #打开键看存不存
    print("Bentley  exist")
except Exception as e:
    key = None
    print("Bentley dont exist")


def Recursion(path) :  #后续遍历递归小函数,好像是深度优先,忘了
    key = win32api.RegOpenKeyEx(reg_root, path, 0, reg_flags)

    m_item = win32api.RegEnumKeyEx(key)
    if not m_item:
        reg_parent, subkey_name = os.path.split(path) #获得父路径名字 和自己的名字,而不是路径
        try:
            key_parent = win32api.RegOpenKeyEx(reg_root, reg_parent, 0, reg_flags) #看这个节点是否可被访问
            win32api.RegDeleteKeyEx(key_parent, subkey_name) #删除这个节点
            return 
        except Exception as e:
            print("Bently 被拒绝访问")
            return

    for item in win32api.RegEnumKeyEx(key):  #递归加子节点
        strRecord = item[0] #采用key的第一个节点,item里面是元组,获取第一个名字。就是要的子项名字
        newpath = path + '\\' + strRecord
        Recursion(newpath) 
    
    #删除父节点
    root_parent, child_name = os.path.split(path)
    try: #看这个节点是否可被访问
        current_parent = win32api.RegOpenKeyEx(reg_root, root_parent, 0, reg_flags)
        win32api.RegDeleteKeyEx(current_parent, child_name)
    except Exception as e:
        print("Bently 被拒绝访问")
        return


if key != None:
    Recursion(reg_path)


try:
    key = win32api.RegOpenKeyEx(reg_root, reg_path, 0, reg_flags)
    m_item = win32api.RegEnumKeyEx(key)
    if not m_item:
        print("Bentley 无子项,delete Bentley successful!")
    else:
        print("Bently 有子项,its failing!")
except Exception as e:
    print("its wrong operation!")

os.system('regedit')

删除完后Bentley这个键还在,底下的子项没了,bentley没删除掉,是因为他的父节点没设置成完全控制,就是这个东东

WOW6432Node 

本来想发项目的,赚点积分,下载文章的,想想大家可能也为积分发愁,真是的!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值