Никакое количество googling не привлекло меня нигде с этим.Win32_LogonSession возвращает неправильное значение
У меня есть следующий код, который проверяет, вошли ли пользователи (пользователи) на ПК через консоль или RDP.
Он работает нормально, но проблема в том, что после выхода пользователя из системы WMI (или что-то еще) все еще думает, что они вошли в систему, и в этом случае возвращает true
, когда он должен вернуть false
.
Если я перезагружаю компьютер, он возвращается к 0, пока я не войду в систему.
Я согласен с тем, что это может быть ошибкой в WMI, поэтому, если у кого-то есть лучшая альтернатива для достижения того же, я бы очень ценил совет.
public bool PCInUse(string Hostname)
{
ConnectionOptions connection = new ConnectionOptions();
connection.Username = "username;
connection.Password = "password";
ManagementScope scope = new ManagementScope("\\\\" + Hostname + "\\root\\CIMV2", connection);
try
{
scope.Connect();
var Query = new SelectQuery("SELECT LogonId FROM Win32_LogonSession Where (LogonType= 10) or (LogonType= 2)");
var Searcher = new ManagementObjectSearcher(scope, Query);
if (Searcher.Get().Count > 0)
return true;
else
return false;
}
catch
{
return false;
}
}
Что вы пытаетесь достичь именно? Вы хотите знать, зарегистрирован ли кто-нибудь? – Mark