Entwickler-Ecke
WinForms - Lokale Windows User auslesen
opelig - Mi 10.08.11 14:32
Titel: Lokale Windows User auslesen
Hallöchen,
Ich schreibe gerade an einem Programm in c#. In diesem sollen unter anderem die vorhandenen Windows User in einer Listbox stehen.
Bisher habe ich
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| private void usr_listbox() { DirectoryEntry localMachine = new DirectoryEntry("WinNT://" + Environment.MachineName); DirectoryEntry admGroup = localMachine.Children.Find("ean", "user"); object members = admGroup.Invoke("user"); foreach (object groupMember in (System.Collections.IEnumerable)members) { DirectoryEntry member = new DirectoryEntry(groupMember); usr_lb.Items.Add(member.Name); usr_lb2.Items.Add(member.Name); } } |
das funktioniert nur leider nicht. Bei Zeile 7 bekomm ich nen error "Unbekannter Name. (Ausnahme von HRESULT: 0x80020006 (DISP_E_UNKNOWNNAME))"
ich hab jetzt schon ne Ecke gegoogled aber Leider nichts passendes gefunden.
Danke schonmal für eure Mühe und Hilfe
Moderiert von
Th69: C#-Tags hinzugefügt und einige Rechtschreibfehler korrigiert
Moderiert von
Th69: Und noch ein Hinweis: dies ist der Nachfolgethread zu Aktuell Vorhandene Systembenutzer auslesen [http://www.mycsharp.de/wbb2/thread.php?threadid=97553]
Trashkid2000 - Mi 10.08.11 22:10
Hallo und :welcome:
Naja, laut dem Code fragst Du einen User ab, der "ean" heißt. Und nicht eine Gruppe. Und von diesem User fragst Du dann nochmal die User ab. Fällt Dir dabei was auf?
opelig hat folgendes geschrieben : |
ich hab jetzt schon ne Ecke gegoogled aber Leider nichts passendes gefunden. |
Naja, wahrscheinlich hast Du einfach nicht die richtigen Schlagworte eingegeben.
Wer mit Google
richtig sucht, findet auch meistens die
richtigen Sachen.
Z.B. diese Seite:
http://stackoverflow.com/questions/252882/get-a-list-of-members-of-a-winnt-grouphttp://stackoverflow.com/questions/252882/get-a-list-of-members-of-a-winnt-group
Also in Deinem Fall müsste es so aussehen:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| using (DirectoryEntry groupEntry = new DirectoryEntry(string.Format("WinNT://{0}/ean, group", Environment.MachineName))) { foreach (object member in (IEnumerable)groupEntry.Invoke("Members")) { using (DirectoryEntry memberEntry = new DirectoryEntry(member)) { usr_lb.Items.Add(memberEntry.Name); usr_lb2.Items.Add(memberEntry.Name); } } } |
LG,
opelig - Do 11.08.11 09:48
hoi hoi,
Danke schonmal für die Hilfe, doch leider Funktioniert das ganze so nicht!
Nochmal zur Erinnerung: Auslesen der Lokalen Benutzer. also komplett ohne AD oder LDAP oder ähnlichem. Desweiteren
sollen alle User also inklusive dem Admin und allem aufgelistet werden, also nicht nur bestimmte Gruppen.
opelig - Do 11.08.11 12:44
ich liste kurz mal meinen bisherigen Code
das window in dem sich alles abspielt:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.DirectoryServices; using System.Collections; using System.Management;
namespace ParentController { public partial class Parent_Controll : Form { public Parent_Controll() { InitializeComponent(); pr_sav_btn_E(); usr_listbox(); usr_list usr_listb = new usr_list(); getactprox gaP = new getactprox();
}
private void pr_sav_btn_E() { if (pr_bn_tb.Text == "" || pr_pn_tb.Text == "" || pr_pp_tb.Text == "" || pr_pw_tb.Text == "") pr_sav_btn.Enabled = false; else pr_sav_btn.Enabled = true; }
private void pr_sav_btn_Click(object sender, EventArgs e) { }
private void pr_res_btn_Click(object sender, EventArgs e) { }
private void exitToolStripMenuItem_Click(object sender, EventArgs e) { this.Close(); Welcome wc = new Welcome(); wc.Show(); } private void zs_hinweis_pnl() { } private void usr_listbox() { usr_lb.Items.Add(Name); }
} } |
hier füllt er zwar schon die "usr_lb" aber Leider nur mit dem Wort "Name" jedoch ist das ne Listbox und da sollten Alle user die es Lokal gibt erscheinen.
die klasse zur user abfrage:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38:
| using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Management; using System.IO;
namespace ParentController { class usr_list { public static void GetUsers() { SelectQuery sQuery = new SelectQuery("Win32_UserAccount");
try { ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQuery); Console.WriteLine("User Accounts"); Console.WriteLine("");
foreach (ManagementObject mObject in mSearcher.Get()) { Console.WriteLine(mObject["Name"]); } } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } } } |
entweder steh ich im moment total auf der Leitung und seh den Fahler nicht oder ... naja wie dem auch sei. Bin für jeden Tip dankbar
opelig - Fr 12.08.11 12:08
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void usr_listbox() { SelectQuery query = new SelectQuery("Win32_UserAccount"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); foreach (ManagementObject envVar in searcher.Get()) { usr_lb.Items.Add(envVar["Name"]); usr_lb2.Items.Add(envVar["Name"]); } } |
Die Lösung kann so Simpel sein :)))
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!