2009-02-26 3 views
4

Как изменить срок действия пароля на «никогда» в Windows XP для локального пользователя с Python? У меня есть модули PyWIN и WMI на борту, но у меня нет решения. Мне удалось запросить текущие настройки через WMI (на основе класса Win32_UserAccount), но как его изменить?Как изменить срок действия пароля в Windows с помощью Python?

+0

Я был бы очень обеспокоен, если бы Windows разрешала внешнему коду изменять пользовательские настройки. Какое возможное использование могло бы быть в законных целях? Оставьте администрирование системы предоставленными встроенными средствами администрирования. – HardCode

+0

В таких случаях я рекомендую спросить «как я могу сделать X с помощью win32 api», а не «как я могу сделать X с помощью Python», потому что в конечном итоге вы будете использовать win32 api, и формулировка вопроса может помочь вам получить больше ответов , –

ответ

0

Это изменение потребует прав администратора, которые могут (или не могут) вызывать проблемы внутри PyWin32. Я не вижу прямого способа сделать это изменение из сценария Python, но я уверен, что это можно автоматизировать с использованием другого метода.

Это MSFN нить, кажется, есть информация, которая поможет вам, или, по крайней мере, начало:

http://www.msfn.org/board/Password-Expires-Chang-t115757.html

0

Вам может понадобиться админы привилегий для сделать это, так что смотрите в подъемном текущем процессе или запуске новый процесс с большим количеством привилегий. (Например, что-то вроде UAC, но на XP.)

Не могу помочь с подробностями. : -/

1

Если вы используете свой питон скрипт с ActvePython против Active Directory, то вы можете использовать что-то вроде этого:

import win32com.client 
ads = win32com.client.Dispatch('ADsNameSpaces') 
user = ads.getObject("", "WinNT://DOMAIN/username,user") 
user.Getinfo() 
user.Put('userAccountControl', 65536 | user.Get('userAccountControl')) 
user.Setinfo() 

Но если ваш питон работает под UNIX, вам нужно две вещи, чтобы говорить в Active Directory: Kerberos и LDAP. После того, как вы подключили аутентификацию LDAP на сервере SASL (KRB5) на сервере Active Directory, вы получите доступ к атрибуту userAccountControl целевого пользователя.

userAccountControl - целочисленный атрибут, обработанный как поле бит, на котором вы должны установить бит DONT EXPIRE PASSWORD. См. this KB article для значений бит.

+0

Для местных учетных записей, я нашел, что мне нужны 'userFlags', а не' userAccountControl'. – Gabe

Смежные вопросы