def is_win32user_an_admin(): WHO_AM_I = "C:\\WINDOWS\\System32\\whoami.exe" if not os.path.exists(WHO_AM_I): import win32security import ntsecuritycon subAuths = ntsecuritycon.SECURITY_BUILTIN_DOMAIN_RID, \ ntsecuritycon.DOMAIN_ALIAS_RID_ADMINS sidAdmins = win32security.SID(ntsecuritycon.SECURITY_NT_AUTHORITY, subAuths) return win32security.CheckTokenMembership(None, sidAdmins) else: import subprocess p = subprocess.Popen([WHO_AM_I, "/GROUPS", "/SID"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) if p.wait() != 0: p = subprocess.Popen([WHO_AM_I, "/GROUPS"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) if p.wait() != 0: return False for line in p.stdout.readlines(): if "S-1-5-32-544 " in line or "S-1-5-32-544\r\n" in line: return True return False
def is_root(): """Gets whether the current user is root""" if os.name == 'nt': sid = win32security.CreateWellKnownSid(win32security.WinLocalSystemSid, None) return win32security.CheckTokenMembership(None, sid) else: return os.geteuid() == 0
def is_user_admin(): # import ctypes # return ctypes.windll.shell32.IsUserAnAdmin() != 0 import win32security WinBuiltinAdministratorsSid = 26 # not exported by win32security. according to WELL_KNOWN_SID_TYPE enumeration from http://msdn.microsoft.com/en-us/library/windows/desktop/aa379650%28v=vs.85%29.aspx admins = win32security.CreateWellKnownSid(WinBuiltinAdministratorsSid) return win32security.CheckTokenMembership(None, admins)
def is_admin(): """@return: True if the current user is an 'Admin' whatever that means (root on Unix), otherwise False. Warning: The inner function fails unless you have Windows XP SP2 or higher. The failure causes a traceback to be printed and this function to return False. """ import win32security # WARNING: requires Windows XP SP2 or higher! try: adminSid = win32security.CreateWellKnownSid( win32security.WinBuiltinAdministratorsSid, None) return win32security.CheckTokenMembership(None, adminSid) except: traceback.print_exc() print("Admin check failed, assuming not an admin.") return False
def isUserAdmin(): if os.name == 'nt': import ctypes import win32security # WARNING: requires Windows XP SP2 or higher! try: adminSid = win32security.CreateWellKnownSid( win32security.WinBuiltinAdministratorsSid, None) return win32security.CheckTokenMembership(None, adminSid) #return ctypes.windll.shell32.IsUserAnAdmin() except: traceback.print_exc() print("Admin check failed, assuming not an admin.") return False elif os.name == 'posix': # Check for root on Posix return os.getuid() == 0 else: raise RuntimeError("Unsupported operating system for this module: %s" % (os.name, ))