Hello,
I want to create a research for my listbox. I have created listbox called:
public void ExistUserList_SelectedIndexChanged(object sender, EventArgs e)
and a code that will write in a textbox
private void AllText2_TextChanged(object sender, EventArgs e)
which type is user and name of that user. Like for example "Guest" is a local user, "admin" is a local and domain user and "Romek" is a domain user.
This is my code in my listbox:
if (ExistUserList.SelectedItem != null)
{
selectedUsername = ExistUserList.SelectedItem.ToString();
}
if (ExistUserList.SelectedItem != null && ExistUserList.SelectedItem != "Administrator")
{
string selectedUsr = ExistUserList.SelectedItem.ToString();
AllText2.Text = "Lokalny użytkownik: " + selectedUsr;
}
else if(ExistUserList.SelectedItem == "Administrator")
{
string selectedUsr = ExistUserList.SelectedItem.ToString();
AllText2.Text = "Domenowy i lokalny użytkownik: " + selectedUsr;
}
if (IsDomainUser(selectedUsername, SearchUsersOnServer()))
{
string allText = $"Domenowy użytkownik: {selectedUsername}";
AllText2.Text = allText;
}
And this is my code that download domain users:
private string selectedDomainUser;
private void LoadDomainUsers()
{
try
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal userPrincipal = new UserPrincipal(ctx);
PrincipalSearcher searcher = new PrincipalSearcher(userPrincipal);
foreach (UserPrincipal result in searcher.FindAll())
{
ExistUserList.Items.Add(result.SamAccountName);
}
}
catch (Exception ex)
{
MessageBox.Show("Wystąpił błąd: " + ex.Message);
}
}
private List<string> SearchUsersOnServer()
{
List<string> domainUsers = new List<string>();
DirectoryEntry entry = new DirectoryEntry("LDAP://" + sqlServerName);
DirectorySearcher searcher = new DirectorySearcher(entry);
searcher.Filter = "(&(objectCategory=user)(objectClass=user)(name=*))";
try
{
SearchResultCollection results = searcher.FindAll();
ExistUserList.Items.Clear();
foreach (SearchResult result in results)
{
string domainusername = result.Properties["name"][0].ToString();
domainUsers.Add(domainusername);
}
}
catch (Exception ex)
{
MessageBox.Show("Błąd podczas wyszukiwania użytkowników: " + ex.Message);
}
try
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);
UserPrincipal userPrincipal = new UserPrincipal(ctx);
PrincipalSearcher principalSearcher = new PrincipalSearcher(userPrincipal);
ExistUserList.Items.Clear();
foreach (UserPrincipal result in principalSearcher.FindAll())
{
string domainUsername = result.SamAccountName;
ExistUserList.Items.Add(domainUsername);
selectedDomainUser = domainUsername;
}
}
catch (Exception ex)
{
MessageBox.Show("Wystąpił błąd: " + ex.Message);
}
return domainUsers;
}
What I have tried:
I have a working code just for local users and admin but for a domain users I didn't have any information to make it work.