Если вы просто пытаетесь проверить, есть ли у вас доступ к определенному файлу, требующему административных прав, хорошим способом проверки будет:
import os
print os.access("/path/to/file", os.W_OK)
#replace W_OK with R_OK to test for read permissions
С другой стороны, если вам действительно необходимо знать, является ли пользователь административной учетной записью, вы также можете использовать этот код в Windows 2000 и более поздних версиях:
import ctypes
print ctypes.windll.shell32.IsUserAnAdmin()
Следовательно, лучший межплатформенный способ выяснить, является ли пользователь администратором:
import ctypes, os
try:
is_admin = os.getuid() == 0
except:
is_admin = ctypes.windll.shell32.IsUserAnAdmin()
print is_admin
Конечно, этот метод будет определять только, является ли пользователь root в Unix или входит в группу «Администраторы» в Windows. Однако, по моему мнению, этого достаточно для большинства целей.
Также обратите внимание, что это не будет работать в версиях Windows ниже 2000, а также в Windows ME, так как это версии Windows для DOS и не имеют никакого понятия о разрешениях.