1

現在 AD に接続されているすべてのコンピューターと、ユーザーが AD にログオンしているコンピューターを受信しようとしています。ComputerPrincipalのプロパティを試してみました.LastLogonが、約 1 週間で完全にずれている値が得られました。

AD で利用可能なコンピュータを知りたいです。私が使用できる別の方法はありますか?

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "192.168.0.101:389", "Administrator", "XXXX");

// define a "query-by-example" principal - here, we search for a ComputerPrincipal 
ComputerPrincipal qbeComputer = new ComputerPrincipal(ctx);

// create your principal searcher passing in the QBE principal    
PrincipalSearcher srch = new PrincipalSearcher(qbeComputer);

// find all matches
foreach (var found in srch.FindAll())
{
    // do whatever here - "found" is of type "Principal" - it could be user, group, computer.....          
    ComputerPrincipal cp = found as ComputerPrincipal;

    if (cp != null)
    {
       string computerName = cp.Name;
       DateTime? lastLogon = new DateTime();
       lastLogon = cp.LastLogon;
       DateTime convertedDate = DateTime.SpecifyKind(DateTime.Parse(cp.LastLogon.ToString()), DateTimeKind.Utc);

       var kind = convertedDate.Kind;
       DateTime dt = convertedDate.ToLocalTime();

       Response.Write(cp.Name+"   :   "+ dt.ToString()+ "<br />");
    }
 }

編集:

印刷物を次のようにしたい:

コンピュータ 1: True コンピュータ 2: False コンピュータ 3: False コンピュータ 4: True

現在ログオンしている場合、コンピューターにクエリを実行することはできませんか? ブール値、True または False が必要です。

4

2 に答える 2

0

これは典型的な MCSE の質問です。lastlogon フィールドは、その特定の DC に対してローカルであり、グローバルにレプリケートされません。

各 AD ドメイン コントローラーにクエリを実行し、それぞれの最新の日付を探す必要があります。

于 2012-05-29T12:19:53.257 に答える
0

フォレスト/ドメイン内のすべてのドメイン コントローラでセキュリティ イベント ログを照会して、ユーザーが何らかのマシンにログオンしていることを確認する必要があります。次に、WMI を使用してこのワークステーションに接続し、ユーザーがまだログオンしているかどうかを確認する必要があります。

関心のあるイベントは、対話型ログオンの種類 (ログオンの場合は ID 4624、ログオフの場合は ID 4634) のログオン イベントです。

ただし、PC がドメインとの接続を失い (ノートブックでは非常に一般的)、ユーザーがログオフすると、どのドメイン コントローラーもログオフ イベントを受け取りません。

ユーザーは、ドメインがなくても実際にログオンできます。以前に PC に自分のアカウントのローカル キャッシュを作成していました。

他の人が言ったように、lastlogon と lastlogontimestamp は、ユーザーのログオンを追跡する信頼できる方法には使用できません。これこれを確認してください。

ここにいくつかの例

詳細はこちらこちら

于 2012-05-29T12:29:55.737 に答える