У меня есть приложение с именем user extract, так как название предполагает, что цель приложения - извлечь каждую возможную информацию о пользователе, просто выбрав пользователь из окна списка, имя samsaccount будет выбрано и передано как значение в текстовое поле txtusersearcher.text, и я делаю SearchUserName.PerformClick();
. У меня есть текстовое поле, созданное для каждого свойства, и значение свойства устанавливается равным текстовое окно.извлечь LastLogon из Active Directory и установить его равным текстовому полю lastlog.txt с помощью C#
Вещи, которые я попробовал
1)
private void GetUserInformation(string username, string passowrd, string domain)
{
Cursor.Current = Cursors.WaitCursor;
SearchResult rs = null;
if (txtSearchUser.Text.Trim().IndexOf("@") > 0)
rs = SearchUserByEmail(GetDirectorySearcher(username, passowrd, domain), txtSearchUser.Text.Trim());
else
rs = SearchUserByUserName(GetDirectorySearcher(username, passowrd, domain), txtSearchUser.Text.Trim());
if (rs != null)
{
showuserinfo();
ShowUserInformation(rs);
}
else
{
MessageBox.Show("User not found!!!", "Search Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
private void ShowUserInformation(SearchResult rs) {if (rs.GetDirectoryEntry().Properties["lastLogon"].Value != null) lastlog.Text = rs.GetDirectoryEntry().Properties["lastLogon"].Value.ToString();
2)
if (rs.GetDirectoryEntry().Properties["lastLogon"].Value != null)
lastlog.Text = (rs.GetDirectoryEntry().Properties["lastLogon"].Value.ToString());
int x;
x = Int32.Parse(lastlog.Text);
lastlog.Text = x.ToString();
3) Я читал в Интернете, что использование основного контекста, UserPrincipal и главный искатель делает трюк и попробовал это
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal qbeuser = new UserPrincipal(ctx);
PrincipalSearcher srch = new PrincipalSearcher(qbeuser);
foreach (var found in srch.FindAll())
{
UserPrincipal founduser = found as UserPrincipal;
{
if (founduser.LastLogon != null)
lastlog.Text = founduser.LastLogon.ToString();
}
}
Это работает, но это приводит к последнему логову первого пользователя в списке, я хочу, чтобы это значение менялось при каждом щелчке каждого пользователя. Я знаю, что основная причина заключается в том, что значение lastlogon сохраняется как целое число 8, где остальные строки. когда вы используете value.tostring(); он не работает, и я получаю ошибку System.__ComObject
. Люди предложили использовать бросок, но я новичок в этой технологии, образец кода литья был бы очень оценен, и обходной путь к этой проблеме будет очень ценен. Спасибо, ребята !!!!!!!!!!!
@DJKRAZE если ваш интересно эти вопросы на самом деле то же самое, что и тот, о котором я спрашивал раньше, я думал, что проблема была исправлена. Я не знал, что если бы только возвращал последнее время для первого пользователя в списке, для любого пользователя, который был выбран, текстовое поле имело тот же самый значение, поэтому любые предложения о том, как я могу изменить текст в текстовом поле lastlog для каждого пользователя. –