2013-01-08 91 views
3

我正在写一个C++程序来管理Windows 7上的用户帐户。如何设置用户帐户密码而不知道C中的旧密码?

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

我不能使用NetUserChangePassword(Netapi32.dll),因为我没有记录创建用户时设置的以前的密码。

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

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

谢谢你的帮助。

+6

是这个安全漏洞是专门插入到Windows允许这种使用情况。 – RedX

+1

那么,即使我喜欢在Linux上讽刺,root用户可以在不知道旧密码的情况下更改任何密码;)。也许在Windows中有类似的东西。 – mfontanini

+0

看一下[NetUserSetInfo](http://msdn.microsoft.com/en-us/library/windows/desktop/aa370659 \(v = vs.85 \).aspx) – Romoku

回答

5

呼叫NetUserSetInfolevel参数设置为1003

+3

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

相关问题