如何检查Windows用户是否设置了密码?

Nef*_*ius 9 c# wmi

我不知道这很难解决,但我在这里.

我正在开发一个网络支持客户端,它必须检测当前登录用户是否设置了密码.我与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)

这正是我所需要的,谢谢大家快速而有能力的答案,我总是可以依靠你!=)

ado*_*ntz 7

为什么不尝试使用空密码登录用户?