修改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不可用。因此,我希望有一个没有管理员权限的工作方式(仅需要更改您自己的密码)。
SetPassword
需要管理员权限才能执行—这可能不是您想要做的事情。ChangePassword
不能由最终用户自己使用,也可以由最终用户自己使用。它接受旧密码和新密码作为参数。这将是执行此操作的首选方式,并且还可以验证它们的身份。
理论上,您可以使用WinNT提供程序来实例化DirectoryEntry
对象,从而使用户能够在不提供域管理权限的情况下更改密码。您也可以考虑这里发布的代码,使用加密数据库来存储管理凭据。
这可能是一个冒险的举动,这取决于您的存储的性质(您可以使用机器的MAC地址的哈希值作为密码?),但我不确定是否有其他方法可以做到这一点。据我所知,eMi提供的答案如果没有DirectoryEntry
的认证实例就无法工作,尽管我可能错了。