Me gustaría obtener la fecha de creación de una cuenta de usuario local (Win 7 si es importante). He mirado los siguientes objetos WMI (y google, por supuesto):
Win32_UserAccount
Win32_NetworkLoginProfile
Los objetos devueltos NetworkLoginProfile
tienen la última hora de inicio de sesión, pero no la fecha de creación. Verificar la Date Created
propiedad de su carpeta de perfil simplemente da la fecha en que se creó esa carpeta , no necesariamente la cuenta en sí.
windows
powershell
wmi
user-accounts
MDMoore313
fuente
fuente
Respuestas:
Los datos están en el SAM, pero no parece estar documentado públicamente por Microsoft y no encuentro una API oficial para recuperarlos. Puedo ver, mirando el código fuente de la
chntpw
utilidad, que el valor se almacena en la clave de registro "F" para cada cuenta. Quoth el código fuente:El proyecto forense regripper tiene un complemento, samparse , que informará la fecha de creación de la cuenta.
Una herramienta forense probablemente no sea lo que desea, pero parece que Microsoft no lo está facilitando.
Al investigar esto, me pareció divertido que un MVP de Microsoft no supiera que los datos de creación de la cuenta están almacenados en el SAM . Para su beneficio, tal vez no esté alejado de la
chntpw
utilidad, que es donde comencé mi búsqueda de información sobre estructuras SAM indocumentadas.fuente
La única forma de saber realmente sería tener habilitada la auditoría de administración de cuentas en la computadora cuando se creó la cuenta. Luego, vería EventID 4720 en el Registro de eventos en la fecha de creación. (El artículo dice Active Directory, pero lo mismo se aplica a las cuentas locales también; lo comprobé).
Sin eso, lo más cercano que puede llegar es verificar la fecha de creación en la sección del registro del usuario, el
ntuser.dat
archivo, la carpeta del perfil del usuario, etc., pero como se menciona en los comentarios, esto solo es preciso con respecto al primer inicio de sesión del usuario, ya que es cuando esas cosas son creados.Desafortunadamente para usted, este es un caso de "si no lo registró, entonces esa información no existe".
fuente
Estaba a punto de darle un script POC PowerShell para extraer y analizar el tiempo de creación, pero me di cuenta de que
chntpw
la lógica es incorrecta. El valor que llama el tiempo de creación es en realidad el último tiempo establecido de contraseña, aunque estos valores son los mismos en la creación inicial de la cuenta. Vea aquí para una descripción exhaustiva del SAM.Sin
samparse
embargo , el segundo enlace de Evan , podría hacerlo bien. Verlo realmente funciona. Si observa su fuente aquí , línea 99:verá que llama
get_timestamp
desde Perl'sParse::Win32Registry
. Estoy bastante seguro de que ese es realmente el último tiempo de escritura de la clave. Como parece que esa tecla en particular (HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>
) solo contiene un puntero a la tecla RID correspondiente, no debería cambiar después de la creación y el último tiempo de escritura será igual al tiempo de creación.Si desea seguir con más herramientas integradas, aquí hay una serie de artículos de Scripting Guy que explican cómo a través de PowerShell:
Use PowerShell para acceder a la marca de tiempo de la última modificación del registro
Reutilización del código de marca de tiempo del registro de PowerShell
Crear una función de proxy para mostrar marcas de tiempo clave del registro
Aproveche las marcas de tiempo clave del registro a través de PowerShell
fuente
Este comando en powershell debería hacer el truco:
fuente
Navega a través de Mi PC para
C: \ Users y verá todas las cuentas de usuario enumeradas en la máquina local. Puede hacer clic con el botón derecho en la cuenta de usuario adecuada e ir a propiedades y le mostrará una fecha de creación, esto debería ser lo mismo que la creación de la cuenta de usuario
Solo mis 2 centavos
fuente