2017-12-11 1 views
0

AD에서 "pwdLastSet"을 가져 오려고했지만 데이터 변환에 문제가 있습니다. 여기C# AD에서 pwdLastSet 가져 오기

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(); 
} 

, 내가 얻을 : 시스템 .__하여 ComObject

가 나는 또한 시도 : 잘못된 입력 문자열 형식

+0

@mjwills TextBox_Password.Text는 AD의 반환 날짜입니다. 디버깅 할 때 catch에서 예외가 발생합니다. – Hoshie

+0

첫 번째 경우 : System .__ ComObject Second : Nothing – Hoshie

+0

TextBox_Password.Text에서 AD에서 반환 날짜를 원합니다. 거기에 아무것도 없거나 System .__ ComObject Second. 이 텍스트 상자에 날짜를 표시하려면 무엇을 입력해야합니까? – Hoshie

답변

1

당신은 TextBox_Password.Text 속성을 설정해야합니다

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

를 자, 내가 예외를 얻을 검색 한 날짜의 문자열 표현에 long.Parse :

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

작품입니다. 고맙습니다. – Hoshie