import ctypes from .api import errors from .api.user import GetUserName from .error import WindowsError, handle_nonzero_success def get_user_name(): size = ctypes.wintypes.DWORD() try: handle_nonzero_success(GetUserName(None, size)) except WindowsError as e: if e.code != errors.ERROR_INSUFFICIENT_BUFFER: raise buffer = ctypes.create_unicode_buffer(size.value) handle_nonzero_success(GetUserName(buffer, size)) return buffer.value