Je souhaite obtenir la date de création d'un compte utilisateur local (Win 7 si c'est important). J'ai regardé les objets WMI suivants (et google bien sûr):
Win32_UserAccount
Win32_NetworkLoginProfile
Les objets retournés NetworkLoginProfile
ont la dernière heure de connexion, mais pas la date de création. La vérification de la Date Created
propriété de leur dossier de profil donne simplement la date de création du dossier , pas nécessairement le compte lui-même.
windows
powershell
wmi
user-accounts
MDMoore313
la source
la source
Réponses:
Les données sont dans le SAM, mais elles ne semblent pas être documentées publiquement par Microsoft et je ne trouve pas d'API officielle pour les récupérer. Je peux voir, en regardant le code source de l'
chntpw
utilitaire que la valeur est stockée dans la clé de registre "F" pour chaque compte. Quoth le code source:Le projet regripper forensics dispose d'un plugin, samparse qui rapportera la date de création du compte.
Un outil de criminalistique n'est probablement pas ce que vous voulez, mais il semble que Microsoft ne vous facilite pas la tâche.
En recherchant cela, j'ai trouvé amusant qu'un MVP Microsoft ne sache pas que les données de création de compte sont stockées dans le SAM . À son avantage, il n'est peut-être pas en dehors de l'
chntpw
utilitaire, c'est là que j'ai commencé ma recherche d'informations sur les structures SAM non documentées.la source
La seule façon de savoir réellement serait d' activer l'audit de la gestion des comptes sur le calcul r lors de la création du compte. Ensuite, vous verriez EventID 4720 dans le journal des événements à la date de création. (L'article dit Active Directory, mais il en va de même pour les comptes locaux; j'ai vérifié.)
Sans cela, le plus proche que vous pouvez faire est de vérifier la date de création dans la ruche, le
ntuser.dat
fichier, le dossier de profil utilisateur, etc. de l'utilisateur, mais comme mentionné dans les commentaires, cela n'est exact que pour la première connexion de l'utilisateur, car c'est à ce moment-là sont créées.Malheureusement pour vous, il s'agit de "si vous ne l'avez pas enregistré, alors cette information n'existe pas".
la source
J'étais sur le point de vous donner un script POC PowerShell pour extraire et analyser le temps de création, mais j'ai réalisé que
chntpw
la logique est incorrecte. La valeur qu'il appelle l'heure de création est en fait la dernière heure définie pour le mot de passe, bien que ces valeurs soient les mêmes lors de la création du compte initial. Voir ici pour une description exhaustive du SAM.Le deuxième lien d'Evan, pour
samparse
, pourrait bien faire les choses cependant. Regarder son fonctionne vraiment. Si vous regardez sa source ici , ligne 99:vous verrez qu'il appelle
get_timestamp
de PerlParse::Win32Registry
. Je suis presque sûr que c'est en fait la dernière heure d'écriture de la clé. Puisqu'il apparaît que la touche particulière (HKLM\SAM\SAM\Domains\Account\Users\Names\<USERNAME>
) ne contient qu'un pointeur sur la clé RID correspondante, elle ne devrait pas changer après la création et la dernière heure d'écriture sera égale à l'heure de la création.Si vous souhaitez vous en tenir à des outils plus intégrés, voici une série d'articles de Scripting Guy expliquant comment via PowerShell:
Utiliser PowerShell pour accéder à l'horodatage de dernière modification du registre
Réutilisation du code d'horodatage du registre PowerShell
Créer une fonction proxy pour afficher les horodatages des clés de registre
Tirez parti des horodatages des clés de registre via PowerShell
la source
Cette commande dans powershell devrait faire l'affaire:
la source
Naviguez via Mon ordinateur pour
C: \ Users et vous verrez tous les comptes d'utilisateurs répertoriés sur la machine locale. Vous pouvez cliquer avec le bouton droit sur le compte d'utilisateur approprié et accéder aux propriétés et il vous montrera une date de création, cela devrait être la même que la création du compte d'utilisateur
Juste mes 2 cents
la source