Cross-platform way to check admin rights in a Python script under Windows?

前端 未结 5 1617
傲寒
傲寒 2021-02-01 18:57

Is there any cross-platform way to check that my Python script is executed with admin rights? Unfortunately, os.getuid() is UNIX-only and is not available under Win

5条回答
  •  醉梦人生
    2021-02-01 20:02

    Here's a utility function I created from the accepted answer:

    import os
    import ctypes
    
    class AdminStateUnknownError(Exception):
        """Cannot determine whether the user is an admin."""
        pass
    
    
    def is_user_admin():
        # type: () -> bool
        """Return True if user has admin privileges.
    
        Raises:
            AdminStateUnknownError if user privileges cannot be determined.
        """
        try:
            return os.getuid() == 0
        except AttributeError:
            pass
        try:
            return ctypes.windll.shell32.IsUserAnAdmin() == 1
        except AttributeError:
            raise AdminStateUnknownError
    

提交回复
热议问题