|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - [решено] Как правильно удалить раздел в реестре Windows? (Python) |
|
Разное - [решено] Как правильно удалить раздел в реестре Windows? (Python)
|
Новый участник Сообщения: 3 |
Профиль | Отправить PM | Цитировать Всем доброго времени суток!
Пишу небольшой метод для скрипта на Python, который будет удалять все ключи и их значения по заданному "пути" в реестре Windows. Изначально чтобы решить этот вопрос использовал стандартный модуль Python - winreg, ну и сам метод рекурсивный. В целом это работает, но например для "пути" реестра: HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR winreg генерирует исключение "[WinError 5] Access denied". Пытался побороть эту злонапасть запуская скрипт от имени "Администратора", но без результата. Также заметил интересную особенность, что если открыть тот же Редактор реестра в Windows от имени "Администратора" и попытаться открыть подключ "Properties", то будет та же ошибка (ниже скриншот): Это получилось решить только открыв Редактор реестра от имени "Системы" через утилиту PsExec с параметром -s, но скрипт на Python мне как раз нужен чтобы не делать всё вручную. Поэтому пришла идея в обработчике исключения, в скрипте Python, запущенного от "Администратора" вызвать PsExec чтобы тот в свою очередь запустил от имени системы команду reg delete. Кусок кода, который это делает, выглядит так: # Например path это строка: HKLM\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_bla_bla_bla path = "delete \"" + path + "\"" + " /f" psPath = os.getcwd() + "\\PsTools\\PsExec64.exe" subprocess.call([psPath, "-accepteula", "-s", "C:\\Windows\\System32\\reg.exe", path], stderr=subprocess.PIPE, stdout=subprocess.PIPE) Попытка не городить сложностей, а просто запустить сразу через PsExec сам скрипт от имени "Системы", тоже не удалась. Как лучше всего програмно удалить раздел в реестре Windows, если судя по всему, не хватает прав? Может кто-то может подсказать, что не так в куске кода выше, почему не происходит удаления? Заранее спасибо! |
|
Отправлено: 16:13, 22-02-2023 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать P.S. если важно (хотя думаю, что не так и уж), то операционка - Win 10, в других версиях не проверял.
|
Отправлено: 16:23, 22-02-2023 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Deadooshka Сообщения: 2512
|
Профиль | Отправить PM | Цитировать 1. у меня с subprocess.PIPE не выводит в консоль, только без них. В доке на subprocess рекомендуют run вместо call
2. с таким path ошибка, видимо надо его добавить в массив аргументов справа по отдельности ... "delete", "HKLM\\.....", "/f" тогда будет правильная конечная команда. |
Отправлено: 07:09, 23-02-2023 | #3 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Sham, с праздниками Вас, а также большое спасибо за наводку про правильную передачу аргументов и ссыль на доку.
Всё заработало , ещё был момент, что не нужно было оборачивать путь реестра в кавычки, код получился такой (возможно, кому-нибудь он будет полезен в будущем): # Получили путь до текущей рабочей папки и PsTools psPath = os.getcwd() + "\\PsTools\\PsExec64.exe" # Запустили удаление reg delete от имени Системы # Например path это строка: HKLM\SYSTEM\ControlSet001\Enum\USBSTOR\Disk&Ven_bla_bla_bla subprocess.run([psPath, "-accepteula", "-s", "C:\\Windows\\System32\\reg.exe", "delete", path, "/f"]) |
Отправлено: 14:35, 23-02-2023 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Установка - [решено] Как удалить скрытый раздел автоматически созданный при установке Windows 7? | Oleg_SK | Microsoft Windows 7 | 16 | 15-01-2016 21:56 | |
Установка - [решено] Как правильно удалить вторую копию Windows 10 | masterchess | Microsoft Windows 10 | 13 | 22-11-2015 19:28 | |
CMD/BAT - [решено] Как в реестре создать раздел при помощи .bat | charon | Скриптовые языки администрирования Windows | 3 | 27-02-2012 17:24 | |
Доступ - Не могу удалить раздел в реестре? | vizar_ | Microsoft Windows Vista | 3 | 27-12-2008 12:51 | |
Как правильно удалить Windows 2000 - ВОПРОС ЧАЙНИКА | chukgek | Microsoft Windows NT/2000/2003 | 4 | 10-07-2006 14:27 |
|