4

ドメインに接続されているかどうかに関係なく、ローカルマシンのログインユーザーを取得できるいくつかの.NETクラスライブラリを調べてみました。ここのところ

System.Security.Principal.WindowsPrincipal LoggedUser = System.Threading.Thread.CurrentPrincipal as 
System.Security.Principal.WindowsPrincipal;
// This returns the username
LoggedUser.Identity.Name

これによりユーザーの名前が返されますが、セッションの詳細、ADまたはログインしたユーザーに表示されるもの、セッション期間などを取得する方法はあります。ユーザーのコンテキスト、ワークステーションのロックなどのアクション、プレゼンス基本的にユーザーの。

何かアイデアがあれば、よろしくお願いします。前もって感謝します。

4

2 に答える 2

2

System.DirectoryServices名前空間を使用して LDAP クエリを介して必要なデータの多くを Active Directory にクエリできます。たとえば、次のサンプルは、ユーザーの最終ログオン時刻を示しています。

もちろん、これはドメイン ユーザーに対してのみ機能します。

using System;
using System.Collections.Generic;
using System.Text;
using System.DirectoryServices;

namespace ADMadness
{
    class Program
    {
        static void Main(string[] args)
        {
            DirectorySearcher search = new DirectorySearcher("LDAP://DC=my,DC=domain,DC=com");
            search.Filter = "(SAMAccountName=MyAccount)";
            search.PropertiesToLoad.Add("lastLogonTimeStamp");


            SearchResult searchResult = search.FindOne();


            long lastLogonTimeStamp = long.Parse(searchResult.Properties["lastLogonTimeStamp"][0].ToString());
            DateTime lastLogon = DateTime.FromFileTime(lastLogonTimeStamp);


            Console.WriteLine("The user last logged on at {0}.", lastLogon);
            Console.ReadLine();
        }
    }
}
于 2009-03-25T17:12:02.903 に答える
1

WMIから開始時刻などの一部を取得するには、WMI_LogonSessionを参照してください。

于 2009-03-25T16:35:40.823 に答える