usando activeDirectory desde C# - obtener el "LastLogon"

17/03/2005 - 19:42 por JC | Informe spam
Hola:

Busco obtener el "LastLogon"para un usuario desde Active Directory usando
C#. El valor lo obtengo, pero me devuelve un entero de 8 bytes (Int64) el
cual no logro procesar, porque no se como tratarlo. El entero aparentemente
es negativo o muy grande (en el caso de castearlo a unsigned).
Creo que debo estar usando mal este entero o el valor que me es devuelto
debo procesarlo de otra forma.

Alguien ha podido hacer esto? Saben como manejar ese entero?

DirectoryEntry gpMemberEntry = new DirectoryEntry("LDAP://" + memberColl);
//memberColl es un string para obtener informacion de un miembro X
DirectorySearcher searcher = new DirectorySearcher(gpMemberEntry);
searcher.PropertiesToLoad.Add("memberOf");
searcher.PropertiesToLoad.Add("lastLogon");

SearchResultCollection results = searcher.FindAll();
foreach(SearchResult result in results)
{
string str1 = result.Properties["memberOf"].Count.ToString();
string str2 = result.Properties["lastLogon"].Count.ToString();
object obj = result.Properties["lastLogon"][0];
Int64 lastLogon = (Int64)obj;
long last = System.Convert.ToInt64(lastLogon.ToString(), 10);

...
...

}

Gracias por la ayuda. Si debo postear en otro foro/lista, diganme por favor.

Juan Carlos

Preguntas similare

Leer las respuestas

#1 Braulio Diez
18/03/2005 - 13:11 | Informe spam
Hola

Por lo que he visto, El número que obtienes con "LastLogon" es: un entero
que representa el numero en intervalos de 100-nanosegundos desde el 1/1/16001
12:00 AM en UTC.

Para poder obtenerlo con C#: La propiedad "LastLogon" en Ad es un "large
integer". Necesita referencia a la librería COM ActiveDS.dll, y usar un
LargeInteger para coger los valores altos y bajos (high and low) de los 64
bits del entero. El valor es del tipo FileTime, el cual lo puedes convertir a
.net DateTime object.

Buena Suerte
Braulio



"JC" escribió:

Hola:

Busco obtener el "LastLogon"para un usuario desde Active Directory usando
C#. El valor lo obtengo, pero me devuelve un entero de 8 bytes (Int64) el
cual no logro procesar, porque no se como tratarlo. El entero aparentemente
es negativo o muy grande (en el caso de castearlo a unsigned).
Creo que debo estar usando mal este entero o el valor que me es devuelto
debo procesarlo de otra forma.

Alguien ha podido hacer esto? Saben como manejar ese entero?

DirectoryEntry gpMemberEntry = new DirectoryEntry("LDAP://" + memberColl);
//memberColl es un string para obtener informacion de un miembro X
DirectorySearcher searcher = new DirectorySearcher(gpMemberEntry);
searcher.PropertiesToLoad.Add("memberOf");
searcher.PropertiesToLoad.Add("lastLogon");

SearchResultCollection results = searcher.FindAll();
foreach(SearchResult result in results)
{
string str1 = result.Properties["memberOf"].Count.ToString();
string str2 = result.Properties["lastLogon"].Count.ToString();
object obj = result.Properties["lastLogon"][0];
Int64 lastLogon = (Int64)obj;
long last = System.Convert.ToInt64(lastLogon.ToString(), 10);

...
...

}

Gracias por la ayuda. Si debo postear en otro foro/lista, diganme por favor.

Juan Carlos



Respuesta Responder a este mensaje
#2 JC
18/03/2005 - 21:34 | Informe spam
Hola, muchas gracias por la respuesta.
Si, ya habia visto algo de lo que me me devuelve con la propiedad LastLogon
y estuve mirando lo que me dijiste pero lo que obtengo desde Active
Directory para el "LastLogon" es de tipo Int64. No sé de qué forma puedo
convertir eso u obtener un LargeInteger.

Gracias,
Juan Carlos


"Braulio Diez" escribió en el mensaje
news:
Hola

Por lo que he visto, El número que obtienes con "LastLogon" es: un


entero
que representa el numero en intervalos de 100-nanosegundos desde el


1/1/16001
12:00 AM en UTC.

Para poder obtenerlo con C#: La propiedad "LastLogon" en Ad es un "large
integer". Necesita referencia a la librería COM ActiveDS.dll, y usar un
LargeInteger para coger los valores altos y bajos (high and low) de los 64
bits del entero. El valor es del tipo FileTime, el cual lo puedes


convertir a
.net DateTime object.

Buena Suerte
Braulio



"JC" escribió:

> Hola:
>
> Busco obtener el "LastLogon"para un usuario desde Active Directory


usando
> C#. El valor lo obtengo, pero me devuelve un entero de 8 bytes (Int64)


el
> cual no logro procesar, porque no se como tratarlo. El entero


aparentemente
> es negativo o muy grande (en el caso de castearlo a unsigned).
> Creo que debo estar usando mal este entero o el valor que me es devuelto
> debo procesarlo de otra forma.
>
> Alguien ha podido hacer esto? Saben como manejar ese entero?
>
> DirectoryEntry gpMemberEntry = new DirectoryEntry("LDAP://" +


memberColl);
> //memberColl es un string para obtener informacion de un miembro X
> DirectorySearcher searcher = new DirectorySearcher(gpMemberEntry);
> searcher.PropertiesToLoad.Add("memberOf");
> searcher.PropertiesToLoad.Add("lastLogon");
>
> SearchResultCollection results = searcher.FindAll();
> foreach(SearchResult result in results)
> {
> string str1 = result.Properties["memberOf"].Count.ToString();
> string str2 = result.Properties["lastLogon"].Count.ToString();
> object obj = result.Properties["lastLogon"][0];
> Int64 lastLogon = (Int64)obj;
> long last = System.Convert.ToInt64(lastLogon.ToString(), 10);
>
> ...
> ...
>
> }
>
> Gracias por la ayuda. Si debo postear en otro foro/lista, diganme por


favor.
>
> Juan Carlos
>
>
>
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida