Найти - Пользователи
Полная версия: работа _winreg (удаление с подключами)
Начало » Python для экспертов » работа _winreg (удаление с подключами)
1
hellt
Доброго времени суток.

Как осуществить удаление ключа (со всеми его подключами)?

Может есть у кого на примете хороший враппер над низкоуровневым _winreg?
hellt
пробовали… не хотелось использовать целый модуль, хотел подцепить идею…
bialix
как удалить рекурсивно? тогда идея есть и в shutil.rmtree
bialix
читаем MSDN

SHDeleteKey Function

--------------------------------------------------------------------------------

Deletes a subkey and all its descendants. The function will remove the key and all of the key's values from the registry.

Syntax

DWORD SHDeleteKey( HKEY hkey,
LPCTSTR pszSubKey
);
Parameters

hkey
Handle to the currently open key, or any of the following predefined values:
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_DYN_DATA (Microsoft® Windows® 95 only)
HKEY_LOCAL_MACHINE
HKEY_PERFORMANCE_DATA (Microsoft Windows NT® only)
HKEY_USERS
pszSubKey
Address of a null-terminated string specifying the name of the key to delete.
Return Value

Returns ERROR_SUCCESS if successful, or a nonzero error code defined in Winerror.h otherwise. You can use the FormatMessage function with the FORMAT_MESSAGE_FROM_SYSTEM flag to retrieve a generic description of the error.

Function Information

Minimum DLL Version shlwapi.dll version 4.71 or later
Custom Implementation No
Header shlwapi.h
Import library shlwapi.lib
Minimum operating systems Windows 2000, Windows NT 4.0 with Internet Explorer 4.0, Windows 98, Windows 95 with Internet Explorer 4.0
hellt
мм. я новичок в питоне… поэтому не знаю как получить доступ к этой функции(
bialix
в таком случае или ищите готовый высокоуровневый враппер или начинайте читать описание ctypes и MSDN :-)
hellt
Вообщем путем нагугливания и вырезания из ООП структуры получил следующее

def getSubKeys(key):
keylist,idx = ,0
while True:
try:
subkey = _winreg.EnumKey(key,idx)
keylist.append(subkey)
idx +=1
except EnvironmentError:
break
return keylist

def DeleteKeysFromReg(aKey,key):
childKeys = getSubKeys(key)
for i in childKeys:
childKey = {“PyHKey”:_winreg.CreateKey(key,i),“name”:str(i)}
DeleteKeysFromReg(key,childKey)
_winreg.DeleteKey(aKey,key)

aReg = _winreg.ConnectRegistry(None, _winreg.HKEY_CURRENT_USER)
audioKey = _winreg.OpenKey(aReg,r“Software\SJLabs\SJvoip Project\SJphone\Options\Audio”, 0, _winreg.KEY_ALL_ACCESS)
optsKey = _winreg.OpenKey(aReg,r“Software\SJLabs\SJvoip Project\SJphone\Options”, 0, _winreg.KEY_ALL_ACCESS)
DeleteKeysFromReg(optsKey,{“PyHKey”:audioKey,“name”:“Audio”})

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB