Нужна помощь в программировании Active Directory - PullRequest
0 голосов
/ 09 марта 2010

Я хочу сделать Windows Service в .NET, который должен работать на Windows Server 2003, 2008. Основные функции, которые мне нужны:

Как только пользователь сети войдет в систему, отобразите его:

  1. Имя пользователя в Active Directory
  2. Домен
  3. IP-адрес, с которого он подключился

Я не хочу устанавливать или запускать какую-либо программу / скрипт на клиентском компьютере.

Буду весьма признателен за любую помощь в разработке этого. я видел несколько статей, объясняющих это, используя пространство имен System.Environment и некоторые другие, но они только проливают свет на локального вошедшего в систему пользователя.

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Одним из обходных путей является мониторинг журнала событий безопасности на компьютере с Windows Server.

Предполагается, что контроллер домена Windows Server 2003/2008 настроен на успешное ведение журнала «Аудит событий входа в систему».

     using System.Diagnostics;
     ...
     myLog = new EventLog("Security");
     myLog.EntryWritten += new EntryWrittenEventHandler(OnEntryWritten);
     ...

    /// <summary>
    /// A new event is logged in the security event log.
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    private void OnEntryWritten(object source, EntryWrittenEventArgs e)
    {
        LogNewEntry(e.Entry);
    }

Windows server 2003

Вы можете идентифицировать вход с идентификаторами событий 528 и 540.

Экземпляр EventLogEntry содержит свойство UserName, которое содержит Domain \ UserName.

Экземпляр EventLogEntry также содержит свойство ReplacementStrings.

Чтобы найти IP-адрес, вам нужно взглянуть на свойство строкового массива ReplacementStrings [13].

Windows server 2008

Вы можете идентифицировать вход с помощью события с кодом 4624.

Чтобы найти имя пользователя, вам нужно взглянуть на свойство строкового массива ReplacementStrings [5].

Чтобы найти домен, вам нужно взглянуть на свойство строкового массива ReplacementStrings [6].

Чтобы найти IP-адрес, вам нужно взглянуть на свойство строкового массива ReplacementStrings [18].

0 голосов
/ 09 марта 2010

Если вы можете использовать .NET 3.5, взгляните на пространство имен System.DirectoryServices.ActiveDirectory . Занятия там должны стать хорошей отправной точкой для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...