c# - How to convert Active Directory pwdLastSet to Date/Time -
public static string getproperty(searchresult searchresult, string propertyname) { if (searchresult.properties.contains(propertyname)) { return searchresult.properties[propertyname][0].tostring(); } else { return string.empty; } } the above method works great active directory properties except related date/time such pwdlastset, maxpwdage, etc.
my question how pwdlastset human readable datetime (like 8/13/2013 or august 13, 2013, etc)
i've tries threw exceptions
public static int64 convertadslargeintegertoint64(object adslargeinteger) { var highpart = (int32)adslargeinteger.gettype().invokemember("highpart", system.reflection.bindingflags.getproperty, null, adslargeinteger, null); var lowpart = (int32)adslargeinteger.gettype().invokemember("lowpart", system.reflection.bindingflags.getproperty, null, adslargeinteger, null); return highpart * ((int64)uint32.maxvalue + 1) + lowpart; } i using following code time int64
int64 passwordlastset = convertadslargeintegertoint64(objresult.properties["pwdlastset"][0]); then plan on using datetime(int64) constructor create datetime
according the msdn documentation:
this value stored large integer represents number of 100 nanosecond intervals since january 1, 1601 (utc).
this aligns datetime.fromfiletimeutc, as described here.
and i'm not sure why feel need low level manipulation of integer. think cast it.
so do:
long value = (long)objresult.properties["pwdlastset"][0]; datetime pwdlastset = datetime.fromfiletimeutc(value);
Comments
Post a Comment