Atributo LastLogon

13/09/2004 - 13:17 por Xabi | Informe spam
Hola,
Tengo una plataforma con 6 DC's (uno por centro). El
primario está en 2000 y los restantes han ido pasando a
2003, en principio son ningún problema, la convivencia
parace ser normla. Tengo cliente NT, 2000 y XP, y necesito
lo siguiente:

Por motivos de inventario necesito conocer las fechas de
último logon en dominio de los puestos de la organización.
He estado mirando con ADSI.edit la variable WhenChanged,
pero parece que no se actualiza correctamente, al menos yo
pensaba que al hacer logon en el dominio se actualizaba
pero no es así.

A ver si alguien me puede echar una mano.

GRACIAS de antemano.

Preguntas similare

Leer las respuestas

#1 Fernando Rubio [MS]
13/09/2004 - 14:01 | Informe spam
Hola Xabi
El atributo lastlogon (al menos en w2k) se actualiza en el controlador de
dominio en el cual el cliente ha hecho logon y no se replica al resto de
controladores de dominio por lo que si no recuerdo mal tienes 2 opciones:
1.- Crear un script que se conecte a todos los DCs y devuleva la fecha mas
moderna
2.- Modificar las propiedades del atributo a fin de que replique entre todos
los DCs desde la consola del schema (pero esta opción te la digo de memoria
y no estoy seguro de si es posible)
Un saludo
Fernando Rubio

<este mensaje se proporciona como esta y no ofrece garantias de ninguna
clase>
<este mensaje se proporciona como esta y no ofrece garantias de ninguna
clase>

"Xabi" escribió en el mensaje
news:106801c49983$366aa220$
Hola,
Tengo una plataforma con 6 DC's (uno por centro). El
primario está en 2000 y los restantes han ido pasando a
2003, en principio son ningún problema, la convivencia
parace ser normla. Tengo cliente NT, 2000 y XP, y necesito
lo siguiente:

Por motivos de inventario necesito conocer las fechas de
último logon en dominio de los puestos de la organización.
He estado mirando con ADSI.edit la variable WhenChanged,
pero parece que no se actualiza correctamente, al menos yo
pensaba que al hacer logon en el dominio se actualizaba
pero no es así.

A ver si alguien me puede echar una mano.

GRACIAS de antemano.
Respuesta Responder a este mensaje
#2 Anonimo
13/09/2004 - 14:33 | Informe spam
Gracias,
Tengo la variable pero en formato large
integer/interval..., ¿Cómo podría verla en un formato
sencillo (fecha)? Supongo que habrá funciones vbs y por el
estilo, pero ahí ando un poco perdido... :-(

Hola Xabi
El atributo lastlogon (al menos en w2k) se actualiza en


el controlador de
dominio en el cual el cliente ha hecho logon y no se


replica al resto de
controladores de dominio por lo que si no recuerdo mal


tienes 2 opciones:
1.- Crear un script que se conecte a todos los DCs y


devuleva la fecha mas
moderna
2.- Modificar las propiedades del atributo a fin de que


replique entre todos
los DCs desde la consola del schema (pero esta opción te


la digo de memoria
y no estoy seguro de si es posible)
Un saludo
Fernando Rubio

<este mensaje se proporciona como esta y no ofrece


garantias de ninguna
clase>
<este mensaje se proporciona como esta y no ofrece


garantias de ninguna
clase>

"Xabi" escribió en


el mensaje
news:106801c49983$366aa220$
Hola,
Tengo una plataforma con 6 DC's (uno por centro). El
primario está en 2000 y los restantes han ido pasando a
2003, en principio son ningún problema, la convivencia
parace ser normla. Tengo cliente NT, 2000 y XP, y necesito
lo siguiente:

Por motivos de inventario necesito conocer las fechas de
último logon en dominio de los puestos de la organización.
He estado mirando con ADSI.edit la variable WhenChanged,
pero parece que no se actualiza correctamente, al menos yo
pensaba que al hacer logon en el dominio se actualizaba
pero no es así.

A ver si alguien me puede echar una mano.

GRACIAS de antemano.


.

Respuesta Responder a este mensaje
#3 Fernando Rubio [MS]
13/09/2004 - 14:50 | Informe spam
Hola

Espero que esto te ayude.

-

' LargeIntegerToDate Function

'

' Converts a LargeInteger object representing a FILETIME to a Date data
type.

'

' A FILETIME is a 64-bit integer value that specifies the number of
100-nanosecond

intervals

' since January 1, 1601 (UTC).

'

' A LargeInteger object provides access to the low and high 32 bits of a
64-bit

integer value.

'

' A Date is a 64-bit floating point value that represents the number of days

since

' December 30, 1899.

'

' Given the low and high 32 bits of a 64-bit value representing the number
of

100-nanosecond

' intervals since January 1, 1601 the following conversions are performed to

convert this value to

' a value representing the number of days since December 30, 1899 which is
how the

Date data type

' represents time.

'

' The first step is to convert the 64-bit integer value to a 64-bit floating
point

value by

' multiplying the high 32 bits by 4294967296.0 (2^32) and then adding the
low 32

bits. This is

' equivalent to shifting the high 32-bit integer value by 32 bits and then
adding

the low 32-bit

' integer value to form a 64-bit integer value and then converting to a
64-bit

floating point value.

'

' The second step is to perform a unit conversion from 100-nanosecond
intervals to

days. Multiplying

' by 1/10^7 (1E-7) seconds per 100-nanosecond interval converts the value to

seconds. Multiplying by

' 1/86400 (8.64E-4) days per second converts the value to days. Therefore

multiplying by the

' combined value of 8.64E-11 (8.64E-4 * 1E-7) or dividing by 8.64E11
converts the

value from

' 100-nanosecond intervals to days.

'

' The third and final step is to adjust the epoch by subtracting the
difference

between the epochs

' so that a value of zero (0.0) represents December 30, 1899. As there are
109205

days between

' January 1, 1601 and December 30, 1899, 109205.0 is subtracted from the
value. The

value of 109205

' was arrived at by obtaining the FILETIME value for December 30, 1899

(94353120000000000) and

' converting to days per the unit conversion performed in the second step
above.

'

' Note that the resulting Double data type is converted to a Date data type
by the

CDate() function.

'***********************************************

Function LargeIntegerToDate(objTime)

LargeIntegerToDate = CDate(((4294967296.0 * objTime.HighPart +
objTime.LowPart) /

8.64E11) - 109205.0)

End Function



Function LargeIntegerToDouble(objLargeInteger)

LargeIntegerToDouble = 4294967296.0 * objLargeInteger.HighPart +

objLargeInteger.LowPart

End Function



'The following is some example code that uses the conversion function. The
example

is an excerpt for printing

'object properties. Note that overflow must be handled. The example simply
converts

to Double instead for

'display purposes.

'Set objLargeInteger = objPropertyValue.LargeInteger

'Select Case objPropertyEntry.Name

' Case "accountExpires","lastLogon","lastLogonTimestamp","pwdLastSet"

' On Error Resume Next

' vntValue = LargeIntegerToDate(objLargeInteger)

' If Err.Number = 6 Then 'Overflow

' vntValue = LargeIntegerToDouble(objLargeInteger)

' End If

' On Error GoTo 0

' Case Else

' vntValue = LargeIntegerToDouble(objLargeInteger)

'End Select

Saludos

Fernando Rubio
<este mensaje se proporciona como esta y no ofrece garantias de ninguna
clase>

<><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><><>

escribió en el mensaje
news:131401c4998d$ef5ceea0$
Gracias,
Tengo la variable pero en formato large
integer/interval..., ¿Cómo podría verla en un formato
sencillo (fecha)? Supongo que habrá funciones vbs y por el
estilo, pero ahí ando un poco perdido... :-(

Hola Xabi
El atributo lastlogon (al menos en w2k) se actualiza en


el controlador de
dominio en el cual el cliente ha hecho logon y no se


replica al resto de
controladores de dominio por lo que si no recuerdo mal


tienes 2 opciones:
1.- Crear un script que se conecte a todos los DCs y


devuleva la fecha mas
moderna
2.- Modificar las propiedades del atributo a fin de que


replique entre todos
los DCs desde la consola del schema (pero esta opción te


la digo de memoria
y no estoy seguro de si es posible)
Un saludo
Fernando Rubio

<este mensaje se proporciona como esta y no ofrece


garantias de ninguna
clase>
<este mensaje se proporciona como esta y no ofrece


garantias de ninguna
clase>

"Xabi" escribió en


el mensaje
news:106801c49983$366aa220$
Hola,
Tengo una plataforma con 6 DC's (uno por centro). El
primario está en 2000 y los restantes han ido pasando a
2003, en principio son ningún problema, la convivencia
parace ser normla. Tengo cliente NT, 2000 y XP, y necesito
lo siguiente:

Por motivos de inventario necesito conocer las fechas de
último logon en dominio de los puestos de la organización.
He estado mirando con ADSI.edit la variable WhenChanged,
pero parece que no se actualiza correctamente, al menos yo
pensaba que al hacer logon en el dominio se actualizaba
pero no es así.

A ver si alguien me puede echar una mano.

GRACIAS de antemano.


.

Respuesta Responder a este mensaje
#4 Anonimo
14/09/2004 - 00:03 | Informe spam
Hola,

Prueba a ver si te ayuda esto, gentileza del maestro
Javier Ingles:
Registra la librería acctinfo.dll (que viene en el Kit de
Recursos de Windows 2000); la copias a %systempath%
\system32 y ejecutas "regserv32%systempath%\system32
\acctinfo.dll.
Una vez hecho aparece una nueva pestaña en las
propiedades del usuario en la que ves la fecha del último
logon, ademas de cuando expira la password.

Saludos

angelluis

Hola

Espero que esto te ayude.

-

' LargeIntegerToDate Function

'

' Converts a LargeInteger object representing a FILETIME


to a Date data
type.

'

' A FILETIME is a 64-bit integer value that specifies


the number of
100-nanosecond

intervals

' since January 1, 1601 (UTC).

'

' A LargeInteger object provides access to the low and


high 32 bits of a
64-bit

integer value.

'

' A Date is a 64-bit floating point value that


represents the number of days

since

' December 30, 1899.

'

' Given the low and high 32 bits of a 64-bit value


representing the number
of

100-nanosecond

' intervals since January 1, 1601 the following


conversions are performed to

convert this value to

' a value representing the number of days since December


30, 1899 which is
how the

Date data type

' represents time.

'

' The first step is to convert the 64-bit integer value


to a 64-bit floating
point

value by

' multiplying the high 32 bits by 4294967296.0 (2^32)


and then adding the
low 32

bits. This is

' equivalent to shifting the high 32-bit integer value


by 32 bits and then
adding

the low 32-bit

' integer value to form a 64-bit integer value and then


converting to a
64-bit

floating point value.

'

' The second step is to perform a unit conversion from


100-nanosecond
intervals to

days. Multiplying

' by 1/10^7 (1E-7) seconds per 100-nanosecond interval


converts the value to

seconds. Multiplying by

' 1/86400 (8.64E-4) days per second converts the value


to days. Therefore

multiplying by the

' combined value of 8.64E-11 (8.64E-4 * 1E-7) or


dividing by 8.64E11
converts the

value from

' 100-nanosecond intervals to days.

'

' The third and final step is to adjust the epoch by


subtracting the
difference

between the epochs

' so that a value of zero (0.0) represents December 30,


1899. As there are
109205

days between

' January 1, 1601 and December 30, 1899, 109205.0 is


subtracted from the
value. The

value of 109205

' was arrived at by obtaining the FILETIME value for


December 30, 1899

(94353120000000000) and

' converting to days per the unit conversion performed


in the second step
above.

'

' Note that the resulting Double data type is converted


to a Date data type
by the

CDate() function.

'***********************************************

Function LargeIntegerToDate(objTime)

LargeIntegerToDate = CDate(((4294967296.0 *


objTime.HighPart +
objTime.LowPart) /

8.64E11) - 109205.0)

End Function



Function LargeIntegerToDouble(objLargeInteger)

LargeIntegerToDouble = 4294967296.0 *


objLargeInteger.HighPart +

objLargeInteger.LowPart

End Function



'The following is some example code that uses the


conversion function. The
example

is an excerpt for printing

'object properties. Note that overflow must be handled.


The example simply
converts

to Double instead for

'display purposes.

'Set objLargeInteger = objPropertyValue.LargeInteger

'Select Case objPropertyEntry.Name

'


Case "accountExpires","lastLogon","lastLogonTimestamp","pw
dLastSet"

' On Error Resume Next

' vntValue = LargeIntegerToDate(objLargeInteger)

' If Err.Number = 6 Then 'Overflow

' vntValue = LargeIntegerToDouble(objLargeInteger)

' End If

' On Error GoTo 0

' Case Else

' vntValue = LargeIntegerToDouble(objLargeInteger)

'End Select

Saludos

Fernando Rubio
<este mensaje se proporciona como esta y no ofrece


garantias de ninguna
clase>

<><><><><><><><><><><><><><><><><><><><><><><><><><><><><
<><><><><><><><><><>

escribió en el


mensaje
news:131401c4998d$ef5ceea0$
Gracias,
Tengo la variable pero en formato large
integer/interval..., ¿Cómo podría verla en un formato
sencillo (fecha)? Supongo que habrá funciones vbs y por


el
estilo, pero ahí ando un poco perdido... :-(

Hola Xabi
El atributo lastlogon (al menos en w2k) se actualiza en


el controlador de
dominio en el cual el cliente ha hecho logon y no se


replica al resto de
controladores de dominio por lo que si no recuerdo mal


tienes 2 opciones:
1.- Crear un script que se conecte a todos los DCs y


devuleva la fecha mas
moderna
2.- Modificar las propiedades del atributo a fin de que


replique entre todos
los DCs desde la consola del schema (pero esta opción te


la digo de memoria
y no estoy seguro de si es posible)
Un saludo
Fernando Rubio

<este mensaje se proporciona como esta y no ofrece


garantias de ninguna
clase>
<este mensaje se proporciona como esta y no ofrece


garantias de ninguna
clase>

"Xabi" escribió en


el mensaje
news:106801c49983$366aa220$
Hola,
Tengo una plataforma con 6 DC's (uno por centro). El
primario está en 2000 y los restantes han ido pasando a
2003, en principio son ningún problema, la convivencia
parace ser normla. Tengo cliente NT, 2000 y XP, y




necesito
lo siguiente:

Por motivos de inventario necesito conocer las fechas de
último logon en dominio de los puestos de la




organización.
He estado mirando con ADSI.edit la variable WhenChanged,
pero parece que no se actualiza correctamente, al menos




yo
pensaba que al hacer logon en el dominio se actualizaba
pero no es así.

A ver si alguien me puede echar una mano.

GRACIAS de antemano.


.





.

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