Вопрос
Я не знал, что это будет трудно понять, но вот я здесь.
Я разрабатываю клиента поддержки сети, который имеетопределить, есть ли у текущего вошедшего в систему пользователя установлен пароль.Я попробовал это с 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;
}
}
Это именно то, что мне было нужно, спасибо всем за ваши быстрые и компетентные ответы, я всегда могу рассчитывать на вас!=) * * Один тысяча двадцать-шесть