Question
我不知道这会这么难弄清楚,但我来了。
我正在开发一个网络支持客户端,它必须检测当前登录的用户是否设置了密码。我尝试使用 WMI 检查PasswordRequired
财产在Win32_UserAccount
类,但它返回false
即使我的帐户is密码保护。我没有主意了...
(背景:我需要此信息来告诉用户他必须设置一个,以便我可以通过远程桌面连接到他,如果帐户“不受保护”,这不是很高兴。如果有办法解决这个问题,我也接受不同的解决方案。)
您忠诚的
奈法留斯
Solution
比我想象的容易,我用 WinAPI 函数管理它LogonUser
并为您提供这个简单的包装代码:
private bool PasswordRequired
{
get
{
IntPtr phToken;
// http://www.pinvoke.net/default.aspx/advapi32/LogonUser.html
bool loggedIn = LogonUser(Environment.UserName,
null,
"",
(int)LogonType.LOGON32_LOGON_INTERACTIVE,
(int)LogonProvider.LOGON32_PROVIDER_DEFAULT,
out phToken);
int error = Marshal.GetLastWin32Error();
if (phToken != IntPtr.Zero)
// http://www.pinvoke.net/default.aspx/kernel32/CloseHandle.html
CloseHandle(phToken);
// 1327 = empty password
if (loggedIn || error == 1327)
return false;
else
return true;
}
}
这正是我所需要的,感谢你们快速而有力的回答,我永远可以信赖你们! =)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)