如何在不知道 C 中的旧密码的情况下设置用户帐户密码?

Posted

技术标签:

【中文标题】如何在不知道 C 中的旧密码的情况下设置用户帐户密码?【英文标题】:How to set user account password without knowing the old password in C? 【发布时间】:2013-01-08 13:06:03 【问题描述】:

我正在编写一个 C++ 程序来管理 Windows 7 上的用户帐户。

我想为现有用户帐户设置密码。

我无法使用 NetUserChangePassword (Netapi32.dll),因为我没有记录我在创建用户时设置的先前密码。

所以,程序必须能够设置一个新密码(不知道旧密码)。

有没有办法在 c++ 中以编程方式做到这一点?

感谢您的帮助。

【问题讨论】:

是的,这个安全漏洞是专门插入到 Windows 中的,以允许这种用例。 好吧,尽管我喜欢讽刺,但在 Linux 上,root 用户可以在不知道旧密码的情况下更改任何密码;)。也许在 Windows 中也有类似的东西。 看看NetUserSetInfo 任何管理员帐户也可以在 Windows 上执行此操作...我认为要求编程方式并非不合理。 @mfontanini win7 管理员可以更改其他用户的密码,但如果不使用原始密码进行更改可能会对帐户造成严重破坏(以前 EFS 加密文件不再可供用户访问,个人证书被丢弃,并且存储的密码被删除)。 【参考方案1】:

调用NetUserSetInfo 并将level 参数设置为1003。

【讨论】:

我认为应该强调的是,在不提供原始密码的情况下调用NetUserSetInfo 将使该用户的 EFS 加密文件(如果有的话)无法访问。避免这种情况的唯一方法是之前已备份 EFS 证书或通过相同方法恢复旧密码。对于很多用户来说,EFS 不是一个问题,但对于那些使用它的人来说,它可能是一个真正令人头疼的问题。

以上是关于如何在不知道 C 中的旧密码的情况下设置用户帐户密码?的主要内容,如果未能解决你的问题,请参考以下文章

phpMyAdmin : 可以在不输入密码的情况下以非 root 用户身份登录,尽管该帐户有一个

如何在不登录firebase / js的情况下注册用户[重复]

如何在不设置密码的情况下在防火墙后面使用 Gradle,只是一个用户?

Laravel 5 - 手动登录没有密码的用户

如何在不将密码保存在数据库中的情况下验证用户身份

如何在没有 PayPal 帐户的情况下取消 PayPal 订阅?