题
我不知道这很难解决,但我在这里.
我正在开发一个网络支持客户端,它必须检测当前登录用户是否设置了密码.我与WMI检查试了一下PasswordRequired在房地产Win32_UserAccount类,但它返回false即使我的账户被密码保护.我没有想法......
(背景:我需要这个信息告诉用户他必须设置一个,以便我可以通过远程桌面连接到他,如果帐户是"不受保护的",这不是很高兴.如果有办法绕过这个我我也接受不同的解决方案.)
真诚的你的
Nefarius
解
比我想象的更容易,我使用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;
}
}
Run Code Online (Sandbox Code Playgroud)
这正是我所需要的,谢谢大家快速而有能力的答案,我总是可以依靠你!=)
| 归档时间: |
|
| 查看次数: |
4653 次 |
| 最近记录: |