reg_path = ['HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'] ## give your registry path inside the square bracket seprated by comma where .bak files must be removed (e.g) [path1,path2,path3]

import os
import subprocess
import ctypes

class disable_file_system_redirection:
    _disable = ctypes.windll.kernel32.Wow64DisableWow64FsRedirection
    _revert = ctypes.windll.kernel32.Wow64RevertWow64FsRedirection
    def __enter__(self):
        self.old_value = ctypes.c_long()
        self.success = self._disable(ctypes.byref(self.old_value))
    def __exit__(self, type, value, traceback):
        if self.success:
            self._revert(self.old_value)
with disable_file_system_redirection():
	def keys(cmd):
		obj = subprocess.Popen(['powershell',cmd], shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
		out, err = obj.communicate()
		if err:
			print(err)
		else:
			if len(out)>1:
				print('Keys to be removed :')
				print(out)
				return "Success"
			else:
				return "fail"
	def remove(cmd,path):
		obj = subprocess.Popen(['powershell',cmd], shell=True, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
		out, err = obj.communicate()
		if err:
			print(err)
		else:
			print('".bak" keys removed for path : '+path)
	for val in reg_path:
		print("Registry Path : "+val)
		KEYS = keys('Get-ChildItem -Path "'+val+'"'+'|Where Name -like "*.bak"')
		if KEYS == "Success":
			remove('Get-ChildItem -Path "'+val+'"'+'|Where Name -like "*.bak"|Remove-Item',val) 
		else:
			print('No ".bak" keys found for '+val+' path')

