2017-12-11 4 views
0

Ich habe versucht, "PwdLastSet" von AD, aber habe Probleme mit der Datenkonvertierung.C# get pwdLastSet von AD

DirectoryEntry de = new DirectoryEntry(); 
DirectorySearcher ds = new DirectorySearcher(de); 
ds.Filter = "(&((&(objectCategory=Person)(objectClass=User)))(samaccountname=" + Login + "))"; 
ds.SearchScope = SearchScope.Subtree; 
SearchResult rs = ds.FindOne(); 

if (rs.GetDirectoryEntry().Properties["samaccountname"].Value == null) 
{ 
    var window = Application.Current.Windows.OfType<MetroWindow>().FirstOrDefault(); 
    if (window != null) 
     await window.ShowMessageAsync("error!", "error"); 
    return; 
} 
else 
{ 
     TextBox_Password.Text = rs.GetDirectoryEntry().Properties["pwdLastSet"].Value.ToString(); 
} 

Hier erhalte ich: System .__ ComObject

ich auch versucht:

long value = (long)rs.Properties["pwdLastSet"][0]; 
DateTime pwdLastSet = DateTime.FromFileTimeUtc(value); 
value = long.Parse(TextBox_Password.Text); 

Hier erhalte ich Ausnahme: Falsche Eingabe-String-Format

+0

@mjwills TextBox_Password.Text ist das Rückgabedatum von AD. Ausnahme ist von fangen, wenn ich debuggen. – Hoshie

+0

Im ersten Fall: System .__ ComObject Zweitens: Nothing – Hoshie

+0

In TextBox_Password.Text Ich möchte Rückkehrdatum von AD. Da ist nichts oder System .__ ComObject Second. Was kann ich hier eingeben, wenn ich in diesem Textfeld terminieren möchte? – Hoshie

Antwort

1

Sie sollten die TextBox_Password.Text Eigenschaft zu einer String-Darstellung des abgerufenen Datums und nicht long.Parse anrufen:

long value = (long)rs.Properties["pwdLastSet"][0]; 
DateTime pwdLastSet = DateTime.FromFileTimeUtc(value); 
TextBox_Password.Text = pwdLastSet.ToString(); 
+0

Es funktioniert. Vielen Dank. – Hoshie