我已使用Windows 7登录该域。
我想以编程方式更改用户的密码。
我试图做“网络用户/域名”但我已经拒绝访问。
我不想手动更改它(CTRL + ALT + DELETE,更改密码......)。
我很乐意在命令行,python,c ++或c#中找到答案。
谢谢,
玛坦
答案 0 :(得分:1)
您可以使用简单的VB脚本(名为changepass.vbs):
Dim UserDomain
Dim UserName
Dim NewPassword
UserDomain = WScript.Arguments.Item(0)
UserName = WScript.Arguments.Item(1)
NewPassword = WScript.Arguments.Item(2)
Set User = GetObject("WinNT://"& UserDomain &"/"& UserName & "")
Call User.SetPassword(NewPassword)
If err.number = 0 Then
Wscript.Echo "The password change was successful."
Else
Wscript.Echo "The password change failed!"
End if
它接受3个参数:域名,用户名和新密码。当前用户必须具有更改密码的权限。如果要在本地计算机上更改密码,请提供“。”作为域名。例如:
cscript changepass.vbs "YOUR_DOMAIN" "user1" "qw23442q"
答案 1 :(得分:1)
不确定如何将其包含在C#中,但是Netapi32.dll库包含NetUserChangePassword函数。 http://msdn.microsoft.com/en-us/library/windows/desktop/aa370650%28v=vs.85%29.aspx
在python中,有两种简单的方法可以做到这一点。使用ctypes,您可以通过键入以下内容来包含它:
from ctypes.wintypes import windll
ChangePassword = windll.Netapi32.NetUserChangePassword
然后输入以下命令更改密码:
ChangePassword(domainname, username, oldpass, newpass)
如果要在当前登录域上分配密码,“domainname”可能为零。 但是,如果您已经有用于python的Windows工具,那么您可以使用win32net来更改密码:
import win32net
win32net.NetUserChangePassword(domainname, username, oldpass, newpass)
同样,可以使用0代替域名。