修改windows本地用户密码

本文关键字:用户 密码 windows 修改 | 更新日期: 2023-09-27 18:18:52

通常可以在Windows中更改自己的密码,无需管理员权限

我正在编写一个工具来管理多个服务器/客户端的用户和组。我也想给客户编辑自己的密码的权利。客户端当然没有管理权限。要更改具有管理员权限的用户密码,我使用DirectoryEntry如下:

try
{
    DirectoryEntry localDirectory = 
        new DirectoryEntry("WinNT://" + Environment.MachineName.ToString());
    DirectoryEntries users = localDirectory.Children;
    DirectoryEntry user = users.Find(username);
    user.Invoke("SetPassword", newPassword);
    Console.WriteLine("Success!");
    Console.ReadLine();
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
    Console.ReadLine();
}

这里的问题是,没有管理员权限,DirectoryServices不可用。因此,我希望有一个没有管理员权限的工作方式(仅需要更改您自己的密码)。

修改windows本地用户密码

SetPassword需要管理员权限才能执行—这可能不是您想要做的事情。ChangePassword不能由最终用户自己使用,也可以由最终用户自己使用。它接受旧密码和新密码作为参数。这将是执行此操作的首选方式,并且还可以验证它们的身份。

理论上,您可以使用WinNT提供程序来实例化DirectoryEntry对象,从而使用户能够在不提供域管理权限的情况下更改密码。您也可以考虑这里发布的代码,使用加密数据库来存储管理凭据。

这可能是一个冒险的举动,这取决于您的存储的性质(您可以使用机器的MAC地址的哈希值作为密码?),但我不确定是否有其他方法可以做到这一点。据我所知,eMi提供的答案如果没有DirectoryEntry的认证实例就无法工作,尽管我可能错了。