如何在不知道 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的情况下注册用户[重复]