Захват местоположения блокировки пользователя в C#C#

Место общения программистов C#
Ответить
Anonymous
 Захват местоположения блокировки пользователя в C#

Сообщение Anonymous »

Мне хотелось бы, чтобы кто-нибудь знал способ получить местоположение блокировки пользователя. Лучший способ сделать это — прочитать журнал событий из домена и извлечь местоположение из события безопасности или есть альтернатива?
У меня есть программа для проверки всех пользователей в AD, если они заблокированы, она мне сообщит. Хотелось бы добавить на место локаута.
public void CheckLockedAccounts(PrincipalContext context)
{
Console.WriteLine("\nLocked user accounts:");
try
{
PrincipalSearcher searcher = new PrincipalSearcher(new UserPrincipal(context) { Enabled = true }); // Creating the search object
bool isAnyLocked = false;
foreach (var result in searcher.FindAll()) // Look through what is in the user search object
{
UserPrincipal user = result as UserPrincipal;
if(!user.IsAccountLockedOut() || user == null)
{
continue;
}
if (user != null && user.IsAccountLockedOut()) // Print out all locked users
{
DirectoryEntry directoryEntry = (user.GetUnderlyingObject() as DirectoryEntry);
DateTime? lockoutTime = null;
string workstationName = "N/A";

// TODO - DONE Fix grabbing time lock out for users.
if (directoryEntry.Properties.Contains("lockoutTime"))
{
object lockOutValue = directoryEntry.Properties["lockoutTime"].Value; // grab time of lockout
if (lockOutValue != null)
{
long lockoutTicks = 0;
try
{
var highPart = (int)lockOutValue.GetType().InvokeMember("HighPart", System.Reflection.BindingFlags.GetProperty, null, lockOutValue, null); // deal with COM object to get high and low parts of the lockout time
var lowPart = (int)lockOutValue.GetType().InvokeMember("LowPart", System.Reflection.BindingFlags.GetProperty, null, lockOutValue, null);
lockoutTicks = ((long)highPart 0)
{
lockoutTime = DateTime.FromFileTimeUtc(lockoutTicks).ToLocalTime();
}
}

Console.WriteLine($"\t[{lockoutTime?.ToString("MM-dd-yyyy HH:mm:ss tt")}] - {user.SamAccountName} - Workstation: {workstationName}".Pastel(Color.Crimson));
}
isAnyLocked = true;
}// end of if-statement
}// end of foreach
if (!isAnyLocked)
{
Console.WriteLine($"\tNo accounts are LOCKED!!! YAY!!!.".Pastel(Color.RoyalBlue));
}// end of if-statement
}// end of try-catch
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}".Pastel(Color.IndianRed));
}// end of catch
}// end of CheckLockedAccounts


Подробнее здесь: https://stackoverflow.com/questions/797 ... in-c-sharp
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»