我从Active Directory获取有关用户和组的信息。我可以通过扩展方法获得各种属性值。
public static string GetProperty(this Principal principal, string property)
{
DirectoryEntry directoryEntry = principal.GetUnderlyingObject() as DirectoryEntry;
if (directoryEntry.Properties.Contains(property))
{
return directoryEntry.Properties[property].Value.ToString();
}
return string.Empty;
}
我面临的问题是,当用户添加到群组时,我需要获取更深层次的信息,例如 ?我希望能够通过C#做到这一点。这可能吗?可能使用这些安全事件? https://support.microsoft.com/en-us/kb/174074
使用ASP.NET MVC,C#,DirectoryServices.dll
答案 0 :(得分:0)
假设您的计算机设置为收集这些事件,您可以阅读事件日志以获取您正在寻找的信息......我写了这个示例来获取logoff
事件。您可以在MSDN上查找事件ID。
using System.Diagnostics;
namespace ReadEventLogs
{
class Program
{
public static void Main(string[] args)
{
System.Diagnostics.EventLog eventLog1 = new System.Diagnostics.EventLog("Security", ".");
foreach(EventLogEntry entry in eventLog1.Entries)
{
//Event ID 4624 LOGON
//EVent ID 4634 LOGOFF
if (entry.InstanceId == 4634)
{
Console.WriteLine(entry.Message);
}
}
}
}
}
如果未指定计算机名称或服务器,则将从本地计算机"."