diff --git a/pupy/modules/reg.py b/pupy/modules/reg.py index 0387a9ad..cff06d43 100644 --- a/pupy/modules/reg.py +++ b/pupy/modules/reg.py @@ -8,7 +8,7 @@ from pupylib.PupyOutput import Color, List, Table, MultiPart, TruncateToTerm TYPES = ( 'NONE', 'SZ', 'EXPAND_SZ', 'BINARY', 'LE32', 'BE32', 'LINK', 'MULTI_SZ', 'RESOURCE', 'RESOURCE_DESCRIPTOR', - 'RESOURCE_REQUIREMENTS_LIST' + 'RESOURCE_REQUIREMENTS_LIST', 'LE64' ) TYPE_COLORS = { diff --git a/pupy/packages/windows/all/reg.py b/pupy/packages/windows/all/reg.py index ba887bda..541dddc5 100644 --- a/pupy/packages/windows/all/reg.py +++ b/pupy/packages/windows/all/reg.py @@ -8,6 +8,7 @@ __all__ = [ import _winreg import re import sys +import struct WELL_KNOWN_KEYS = { 'HKEY_LOCAL_MACHINE': _winreg.HKEY_LOCAL_MACHINE, @@ -30,6 +31,9 @@ WELL_KNOWN_TYPES = { unicode: _winreg.REG_SZ, } +if not hasattr(_winreg, 'REG_QWORD'): + setattr(_winreg, 'REG_QWORD', 11) + WELL_KNOWN_TYPES_NAMES = { _winreg.REG_DWORD: 'DWORD', _winreg.REG_QWORD: 'LE64', @@ -94,6 +98,8 @@ class Value(object): if type(value) == str and ktype in (_winreg.REG_SZ, _winreg.REG_MULTI_SZ): value = value.decode(sys.getfilesystemencoding()) + elif type(value) == str and ktype == _winreg.REG_QWORD: + value, = struct.unpack('