私はこれでどこでもグーグルで遊んでいません。Win32_LogonSessionが間違った値を返します
ユーザーがコンソールまたはRDP経由でPCにログオンしているかどうかを確認する次のコードがあります。
これは正常に実行されますが、ユーザーがログオフした後でもWMI(またはどこかのどこか)がログオンしていると考えていて、この場合はfalse
を返すときにtrue
を返します。
PCを再起動すると、ログインするまで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