如何使用Python在Windows中修改密码到期?

时间:2009-02-26 16:24:29

标签: python windows passwords

对于使用Python的本地用户,如何在Windows XP上将密码过期修改为“never”?我有PyWIN和WMI模块,但没有解决方案。我设法通过WMI查询当前设置(基于Win32_UserAccount类),但如何修改它?

3 个答案:

答案 0 :(得分:1)

如果您使用ActvePython针对Active Directory运行python脚本,那么您可以使用以下内容:

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()

但是如果你的python在unix下运行,你需要两件事来与Active Directory对话:Kerberos和LDAP。获得与Active Directory服务器的SASL(GSSAPI(KRB5))经过身份验证的LDAP连接后,即可访问目标用户的“userAccountControl”属性。

userAccountControl是一个整数属性,被视为位字段,您必须在其上设置DONT EXPIRE PASSWORD位。有关位值,请参阅this KB article

答案 1 :(得分:0)

该更改需要管理员权限,这可能(或可能不会)导致PyWin32内部出现问题。我没有看到任何直接的方式从Python脚本进行此更改,但我确信这可以使用不同的方法自动化。

这个MSFN线程似乎有帮助你的信息,或者至少是一个开始:

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

答案 2 :(得分:0)

您可能需要管理员权限才能执行此操作,因此请查看提升当前流程或启动具有更多权限的新流程。 (即,像vista的UAC,但在XP上。)

虽然无法提供详细信息。 : - /