import sys import win32security import win32api import win32netcon import pywintypes import win32net import ntsecuritycon import win32profile import time def elevate(): try: # Get some privileges to load the hive priv_flags = win32security.TOKEN_ADJUST_PRIVILEGES | win32security.TOKEN_QUERY hToken = win32security.OpenProcessToken (win32api.GetCurrentProcess (), priv_flags) backup_privilege_id = win32security.LookupPrivilegeValue (None, "SeBackupPrivilege") restore_privilege_id = win32security.LookupPrivilegeValue (None, "SeRestorePrivilege") win32security.AdjustTokenPrivileges ( hToken, 0, [ (backup_privilege_id, win32security.SE_PRIVILEGE_ENABLED), (restore_privilege_id, win32security.SE_PRIVILEGE_ENABLED) ] ) except Exception: print("Failed to obtain more provilege") def destroyUser(name): try: win32net.NetUserDel(None, name) except pywintypes.error, err: if err[0] == 2221: # User does not exist return True else: print("Unable to delete user %s: %s"%(name, repr(err))) return False return True def createUser(name, password): userData = {} userData['name'] = name userData['full_name'] = name userData['password'] = password userData['flags'] = win32netcon.UF_DONT_EXPIRE_PASSWD userData['flags'] |= win32netcon.UF_NORMAL_ACCOUNT userData['flags'] |= win32netcon.UF_PASSWD_CANT_CHANGE userData['flags'] |= win32netcon.UF_SCRIPT userData['priv'] = win32netcon.USER_PRIV_USER userData['primary_group_id'] = ntsecuritycon.DOMAIN_GROUP_RID_USERS userData['password_expired'] = 0 # password never expire userData['acct_expires'] = win32netcon.TIMEQ_FOREVER try: win32net.NetUserAdd(None, 3, userData) except Exception: print("unable to create user") return False return True user = "user" password = "Test123" destroyUser(user) createUser(user, password) for _ in range(10): logon = win32security.LogonUser(user, None, password, win32security.LOGON32_LOGON_INTERACTIVE, win32security.LOGON32_PROVIDER_DEFAULT) data = {} data["UserName"] = user hkey = win32profile.LoadUserProfile(logon, data) win32profile.UnloadUserProfile(logon, hkey) logon.close() destroyUser(user)