'''
Module of Windows API for plyer.uniqueid.
'''

try:
    import _winreg as regedit  # pylint: disable=import-error
except ImportError:
    try:
        import winreg as regedit  # pylint: disable=import-error
    except ImportError:
        raise NotImplementedError()

from plyer.facades import UniqueID


class WinUniqueID(UniqueID):
    '''
    Implementation of Windows battery API.
    '''

    def _get_uid(self):
        # Win XP+, REG QUERY KEY /V VALUE, case-insensitive
        handle = regedit.OpenKey(
            regedit.HKEY_LOCAL_MACHINE,
            r"SOFTWARE\\Microsoft\\Cryptography", 0,
            regedit.KEY_READ | regedit.KEY_WOW64_64KEY
        )
        value, _ = regedit.QueryValueEx(handle, "MachineGuid")
        return value


def instance():
    '''
    Instance for facade proxy.
    '''
    return WinUniqueID()
