win/reg: allow unix sep

This commit is contained in:
Oleksii Shevchuk 2019-02-18 17:03:31 +02:00
parent a6f4156610
commit 144bca44da
2 changed files with 30 additions and 7 deletions

View File

@ -26,13 +26,28 @@ TYPE_COLORS = {
}
def as_unicode(x):
if type(x) is str:
if x is None:
return None
elif type(x) is str:
return x.decode('utf-8')
elif type(x) is unicode:
return x
else:
return unicode(x)
def fix_key(x):
x = as_unicode(x)
if x is None:
return x
elif '\\' not in x:
x = x.replace('/', '\\')
while '\\\\' in x:
x = x.replace('\\\\', '\\')
return x
@config(cat='admin', compatibilities=['windows'])
class reg(PupyModule):
'''Search/list/get/set/delete registry keys/values '''
@ -47,7 +62,7 @@ class reg(PupyModule):
commands = cls.arg_parser.add_subparsers(dest='command')
ls = commands.add_parser('ls')
ls.add_argument('key', default='HKCU', help='List key (HKCU by default)')
ls.add_argument('key', nargs='?', help='List key (HKCU by default)')
ls.add_argument('-w', '--wide', action='store_true', default=False, help='Show all the things')
ls.set_defaults(func=cls.ls)
@ -107,6 +122,9 @@ class reg(PupyModule):
def run(self, args):
try:
if args.key:
args.key = fix_key(args.key)
args.func(self, args)
except Exception, e:
@ -168,7 +186,7 @@ class reg(PupyModule):
def ls(self, args):
ls = self.client.remote('reg', 'enum')
result = ls(as_unicode(args.key))
result = ls(args.key)
if result is None:
self.error('No such key')
@ -179,7 +197,7 @@ class reg(PupyModule):
def get(self, args):
get = self.client.remote('reg', 'get')
value = get(as_unicode(args.key), as_unicode(args.name))
value = get(args.key, as_unicode(args.name))
if value is None:
self.error('No such key')
else:
@ -195,7 +213,7 @@ class reg(PupyModule):
value = as_unicode(value)
try:
if kset(as_unicode(args.key), as_unicode(args.name), value, args.create):
if kset(args.key, as_unicode(args.name), value, args.create):
self.success('OK')
else:
self.error('No such key')
@ -206,7 +224,7 @@ class reg(PupyModule):
def rm(self, args):
rm = self.client.remote('reg', 'rm')
if rm(as_unicode(args.key), as_unicode(args.name)):
if rm(args.key, as_unicode(args.name)):
self.success('OK')
else:
self.error('No such key')

View File

@ -375,7 +375,12 @@ def search(term, roots=('HKU', 'HKLM', 'HKCC'), key=True, name=True, value=True,
return typleized
def enum(path):
def enum(path=None):
if path is None:
return [(
True, unicode(item)
) for item in WELL_KNOWN_KEYS]
try:
tupleized = []