【问题标题】:Change Windows user password remotely using .NET使用 .NET 远程更改 Windows 用户密码
【发布时间】:2010-04-08 12:25:33
【问题描述】:

如何使用 VB.NET/C# 远程更改本地用户帐户密码?

我研究了 DirectoryEntry 类,知道如何将用户添加到组,但不知道如何更改(本地)密码。

【问题讨论】:

    标签: .net active-directory


    【解决方案1】:

    使用 .net 3.5:

    PrincipalContext context = new PrincipalContext(ContextType.Domain);
    UserPrincipal user = UserPrincipal.FindByIdentity(context, "user");
    

    用户可以更改自己的密码:

    user.ChangePassword("old", "new");
    

    或者,如果您以 AD 管理员身份运行,您可以重置它:

    user.SetPassword("1234567");
    

    【讨论】:

    • 我认为 OP 想要更改远程机器上非域用户的密码。
    • 在这种情况下,我相信ContextType.Machine 应该可以工作。不太确定,从未与本地用户打过交道。谢谢。
    • 是的,我正在寻找一种修改本地(即非域)用户的方法。我会尝试 ContextType.Machine,但我将如何告诉它使用哪台机器?
    • Ta,这行得通。结果是 UserPrincipal.FindByIdentity(context, strMyServerName) 上下文是 ContextType.Machine 工作。
    【解决方案2】:

    是的,

    这可能适用于 .net 3.5 及更高版本,但它需要启用并运行服务器服务(即文件共享)。如果不是呢???

    我更喜欢来自 VB.Net 程序集核心的古老、可爱、完美且有保证的 ADSI 语法(顺便说一句,它的工作原理就像一个魅力)...示例:

    Dim uName as string = "trgtUser"
    Dim uPass as string = "newPass"
    Dim user = GetObject("WinNT://./" & uName & ",user")
    user.SetPassword(uPass)
    

    这就是在本地机器上设置密码的全部内容!

    玩得开心;)

    【讨论】:

    • 并且它不需要 System.DirectoryServices。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2021-05-14
    • 2018-08-06
    • 1970-01-01
    • 2014-10-12
    相关资源
    最近更新 更多