对于使用Python的本地用户,如何在Windows XP上将密码过期修改为“never”?我有PyWIN和WMI模块,但没有解决方案。我设法通过WMI查询当前设置(基于Win32_UserAccount类),但如何修改它?
答案 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上。)
虽然无法提供详细信息。 : - /