2009-08-26 7 views
3

ログオン時刻をC#のリモートデスクトップまたはコンソールでサーバーに接続したユーザーを検出する必要があります。私はWMIクラスのプロパティを検索しようとしていましたが、何も見つかりませんでした。 もう一度お返事ください!ユーザーが.NET(C#)を使用してシステムにログインしてからの検出方法?

+0

ldapを試しましたか? – Cleiton

+0

リモートデスクトップでは、セッションを切断し、後で再接続できます。ユーザーセッションはサーバーにログインしたままです。この状況で返される価値は何ですか?最初のユーザーログオン以降の時間、または最新のRDPセッションの長さ? – SqlRyan

+0

初回のユーザーログオンから時間を取得するのは大丈夫です。 – backslash17

答えて

2

.NETターミナルサービスライブラリcassiaを参照してください。

ITerminalServicesManager manager = new TerminalServicesManager(); 
using (ITerminalServer server = manager.GetRemoteServer("your-server-name")) 
{ 
    server.Open(); 
    foreach (ITerminalServicesSession session in server.GetSessions()) 
    { 
     Console.WriteLine("Session ID: " + session.SessionId); 
     Console.WriteLine("User: " + session.UserAccount); 
     Console.WriteLine("State: " + session.ConnectionState); 
     Console.WriteLine("Logon Time: " + session.LoginTime); 
    } 
} 

また、直接Windows Terminal Services APIにアクセスするためのP /呼び出しを使用することができますが、カッシアはあなたのためにそれをラップします。

+0

そして、ユーザーがコンソールから接続されていれば?うまくいく? – backslash17

+0

私はそう信じて、それは0のSessionIDを持っている必要があり、WindowStationNameは "コンソール"でなければなりません。 –

関連する問題