First I was astonished to see that _winreg.QueryValue doesn't accept unicode key names, then I came up with this pattern: def RegQueryValue(root, subkey): if isinstance(subkey, unicode): return _winreg.QueryValue(root, subkey.encode("mbcs")) return _winreg.QueryValue(root, subkey) Does this look ok? Thomas