Я работал над способом доступа и изменения привилегий к файлу в Windows через Python 3, точнее, с помощью библиотеки win32security.
Из этих двух ответов Как разрешить/запретить доступ на запись к каталогу в Windows с помощью Python? и Установка разрешений для папок в Windows с помощью Python, я придумал следующее:
sd = win32security.GetFileSecurity(TESTFILE,win32security.DACL_SECURITY_INFORMATION)
dacl = sd.GetSecurityDescriptorDacl()
dacl.AddAccessAllowedAceEx(win32security.ACL_REVISION, 3, 2032127, win32security.LookupAccountName("", "theUser")[0])
sd.SetSecurityDescriptorDacl(1, dacl, 0)
win32security.SetFileSecurity(TESTFILE,win32security.DACL_SECURITY_INFORMATION,sd)
Это работает как шарм с файлами, которым не требуется приглашение администратора, но при доступе к защищенным файлам отображается эта ошибка:
pywintypes.error: (5, «SetFileSecurity», «Доступ запрещен».)
Следовательно, я ищу способ выдать себя за текущего пользователя с помощью win32security.ImpersonateLoggedOnUser(...)
. Однако я не могу найти правильные аргументы для указания в качестве параметра. В Python 2.6 была версия win32Security.LogonUser
, но не версия 3.4.
Может ли кто-нибудь указать мне правильные аргументы или соответствующую документацию для этого?
SetFileSecurity
уже не удалось, чего вы надеетесь добиться, выдавая себя за текущего пользователя? Вы не сказали, какая версия Windows; если это Vista или более поздняя версия, вы можете подняться, чтобы получить токен в группе администраторов. - person Eryk Sun   schedule 07.02.2015SeTcbPrivilege
(например, работает как локальный пользователь SYSTEM), то она может даже получить привилегированный токен администратора без необходимости повышения (поскольку это действительно было бы бессмысленно для процесса, который уже имеет привилегии действовать как часть ОС). - person Eryk Sun   schedule 08.02.2015