Editing windows register using winreg in Python 3.X

59 views Asked by At

IDE: VS Code The main purposes of the code:

  1. be able to edit file in the directory with the main.py;
  2. be able to edit register by adding keys, giving them a description and deleting them
import shutil
import os
import argparse
import winreg as wrg


def directory(dir_name):
    if (dir_name == 'HKEY_CLASSES_ROOT'):
        location = wrg.HKEY_CLASSES_ROOT
    elif (dir_name == 'HKEY_CURRENT_USER'):
        location = wrg.HKEY_CURRENT_USER
    elif (dir_name == 'HKEY_LOCAL_MACHINE'):
        location = wrg.HKEY_LOCAL_MACHINE
    elif (dir_name == 'HKEY_USERS'):
        location = wrg.HKEY_USERS
    elif (dir_name == 'HKEY_CURRENT_CONFIG'):
        location = wrg.HKEY_CURRENT_CONFIG
    return location


def printf(args):
    file = open(file_name, "w+")
    file.write(text)
    file.close()


def read(args):
    file = open(file_name, "r+")
    print(file.read())
    file.close()


def copy(args):
    shutil.move(file_name, text)


def remove(args):
    os.remove(file_name)


def create_key(args):
    open = wrg.OpenKeyEx(directory(register_folder),
                         inner_reg_folder)  
    key = wrg.CreateKey(open, file_name)
    if key:
        wrg.CloseKey(key)


def print_key(args):
    open = wrg.OpenKeyEx(directory(register_folder), inner_reg_folder)  # inner_reg_folder)
    key = wrg.CreateKey(open, file_name)
    wrg.SetValueEx(key, text, 0, wrg.REG_SZ, register_folder)
    if key:
        wrg.CloseKey(key)
    #print(directory(register_folder))
    #print(inner_reg_folder)


def del_key(args):
    open = wrg.OpenKeyEx(directory(register_folder), inner_reg_folder)
    key = wrg.CreateKey(open, file_name)
    del_key = wrg.DeleteKey(key, "")
    if key:
        wrg.CloseKey(key)


parser = argparse.ArgumentParser()
parser.add_argument('command')
parser.add_argument('file_name')
parser.add_argument("--text")
parser.add_argument("--register_folder")
parser.add_argument("--inner_reg_folder")
args = parser.parse_args()  

command = args.command
file_name = args.file_name
text = args.text
register_folder = args.register_folder
inner_reg_folder = args.inner_reg_folder

commands = {  
    'print': printf,
    'read': read,
    'copy': copy,
    'remove': remove,
    'create_key': create_key,
    'print_key': print_key,
    'delete_key': del_key
}

result = commands[command]
result(args)

Code works almost fine, but if I try to use other folder than HKEY_LOCAL_MACHINE, my code does not work anymore. An example: If I write the Command like like this, everything works fine:

python3 main.py print_key  MyKey1 --text please_work  --register_folder HKEY_LOCAL_MACHINE --inner_reg_folder SOFTWARE

But i try any other HKER folder, such as:

python3 main.py print_key  MyKey1 --text please_work  --register_folder HKEY_CURRENT_USER --inner_reg_folder Software

Nothing works at all

0

There are 0 answers