Determinando a data / hora de logon para perfis de usuário no Windows

3

Estou procurando um método confiável para extrair a data / hora do último logon para cada perfil de usuário em uma determinada máquina.

Alguma ideia? Leia abaixo para ver meus métodos atuais.

No Windows XP, eu já examino o registro e extrai os valores ProfileLoadTimeHigh e ProfileLoadTimeLow da pasta NT \ CurrentVersion \ ProfileList \ HKLM \ SOFTWARE \ Microsoft \ Windows.

Esses nomes de valores existem no Vista, no Windows 7 e no 2008, mas seu valor é sempre 0.

Nesses sistemas, eu tenho uma maneira desajeitada de extrair os dados, mas sei que não é 100% preciso. Nesses sistemas operacionais, vou a cada diretório de perfil registrado e pego o valor lastwritetime do arquivo ntuser.pol. Isso é bastante preciso, mas no XP (onde posso usar o método mencionado acima) eu vejo uma diferença de 3 a 4 minutos entre o momento em que o arquivo ntuser.pol foi gravado pela última vez versus o log-time mostrado no registro.

A classe Win32_NetworkLoginProfile no WMI tem a mesma limitação. Os sistemas XP armazenam o último logon na propriedade LastLogon, mas para sistemas operacionais posteriores essa propriedade está vazia.

Então você tem isso. Onde estão os dados fornecidos para o XP localizados no Vista / 7/2008?

    
por Shane Corellian 17.11.2009 / 22:51

1 resposta

3

A propriedade LastLogon do Win32_NetworkLoginProfile deve ter. Na máquina Win7 que estou vendo agora, abri o wbemtest e rodei:

SELECT Name,LastLogon FROM Win32_NetworkLoginProfile

As únicas entradas que voltaram com < null > valores para LastLogon foram as contas internas como NT AUTHORITY \ SYSTEM . Todas as outras contas na lista (que incluíam contas de domínio e locais) tinham valores válidos para LastLogon.

Não sei ao certo o que faria com que seus sistemas se comportassem de maneira diferente.

    
por 18.11.2009 / 00:05