Is it any cross-platform way to check that my python script is executed under admin rights? Unfortunately, os.getuid() is UNIX-only and is not available under windows :(.

import ctypes
import os

    is_admin = os.getuid() == 0
except AttributeError:
    is_admin = ctypes.windll.shell32.IsUserAnAdmin()

print is_admin

"Admin rights" is meaningless. Both Unix and Windows have a long list of different privileges that a particular user may or may not have. You should just try to do what you want to do and use exceptions to deal with lack of privileges. That's that they're there for.

  • I need to test if script was executed under "su" on unix/macos and under "run as administrator" under vista+. – grigoryvp Jun 22 '09 at 11:04
  • Using exceptions is good, but i need to use third-party applications that have undefined behavior if not run via su/admin, and i do not want to trash a system just to check that script has sufficient rights :) – grigoryvp Jun 22 '09 at 11:05
  • I agree asking for forgiveness rather than permission is right most of the time. But as the OP points out, it's not right all of the time – Martin M. Jun 22 '11 at 0:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.