Мне нужно было простое решение для Windows / Posix, чтобы проверить, есть ли у пользователя права root / admin для файловой системы без установки стороннего решения. Я понимаю, что существуют уязвимости при использовании переменных среды, но они подходят для моей цели. Можно было бы расширить этот подход для чтения / записи реестра.
Я тестировал это с Python 2.6 / 2.7 на WinXP, WinVista и Wine. Если кто-нибудь знает, что это не будет работать на Pyton 3.x и / или Win7, пожалуйста, сообщите. Спасибо.
def has_admin():
import os
if os.name == 'nt':
try:
# only windows users with admin privileges can read the C:\windows\temp
temp = os.listdir(os.sep.join([os.environ.get('SystemRoot','C:\\windows'),'temp']))
except:
return (os.environ['USERNAME'],False)
else:
return (os.environ['USERNAME'],True)
else:
if 'SUDO_USER' in os.environ and os.geteuid() == 0:
return (os.environ['SUDO_USER'],True)
else:
return (os.environ['USERNAME'],False)