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

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

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

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

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

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

感谢您的帮助。

【问题讨论】:

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

标签: c++ windows passwords


【解决方案1】:

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

【讨论】:

  • 我认为应该强调的是,在不提供原始密码的情况下调用NetUserSetInfo 将使该用户的 EFS 加密文件(如果有的话)无法访问。避免这种情况的唯一方法是之前已备份 EFS 证书或通过相同方法恢复旧密码。对于很多用户来说,EFS 不是一个问题,但对于那些使用它的人来说,它可能是一个真正令人头疼的问题。
猜你喜欢
  • 2023-03-24
  • 2018-01-25
  • 1970-01-01
  • 2023-01-09
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
相关资源
最近更新 更多