Comment par programmation à découvrir la dernière date de connexion à une machine?
Je voudrais un) par programmation et b) à distance trouver la dernière date/le temps qu'un utilisateur a ouvert une session sur une machine Windows (via le bureau à distance ou à la console). Je serais prêt à prendre n'importe quel windows langage (C, C#, VB, des fichiers batch, JScript, etc...) mais aucune solution serait sympa.
OriginalL'auteur esac | 2009-09-24
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
Vous aurez besoin d'ajouter des références à l'aide de l'aide de Système.DirectoryServices et
Système.DirectoryServices.AccountManagement
EDIT: Vous pourriez être en mesure d'obtenir la dernière connexion Datetime pour une machine spécifique en faisant quelque chose comme ceci:
Bonne question.MSDN dit ceci: "Obtient le Nullable DateTime, qui précise la date et l'heure de la dernière ouverture de session pour ce compte." Je suppose que c'est selon si l'ContextType est fixé à un Domaine ou à la Machine, mais je ne peux pas vérifier ce depuis que je suis en cours d'exécution sur un appareil autonome mais mon hypothèse est que si vous êtes en cours d'exécution sur un domaine c'est probablement la dernière ouverture de session réussie pour ce compte sur le domaine.
Flute, j'aime les deux de vos réponses, mais j'ai vraiment besoin de la dernière date de connexion d'un utilisateur spécifique à l'ordinateur spécifié.
Je pense que je pourrais avoir trouvé un moyen, j'ai édité ma réponse. Encore une fois je ne peux pas vérifier car je ne suis pas sur un domaine.
OriginalL'auteur Abhijeet Patel
Vous pouvez utiliser DirectoryServices pour ce faire en C#:
OriginalL'auteur Kolten
Vous pouvez également utiliser
CMD
:OU (plus courte)
De sortie sera quelque chose comme ceci:
OriginalL'auteur Felix D.
Après beaucoup de recherches, j'ai réussi à réunir une belle script PowerShell qui prend un nom de l'ordinateur et de la liste de comptes et
la RÉELLE dernière ouverture de session sur l'ordinateur.... s'avère que MICROSOFT n'a JAMAIS PROGRAMMÉ CORRECTEMENT CETTE FONCTION, IL TENTE D'OBTENIR des INFORMATIONS d'ouverture de session à PARTIR d'ACTIVE DIRECTORY ET de l'enregistrer LOCALEMENT, de SORTE que les UTILISATEURS se CONNECTER À d'AUTRES MACHINES, ET IL va mettre à JOUR LES DATES de CONNEXION SUR VOTRE ordinateur, MAIS ILS n'ont JAMAIS CONNECTÉ À VOTRE MACHINE.... ÉCHEC COMPLET!Note: D'après ce que j'ai pu rassembler, le Win32_NetworkLoginProfile est à l'aide de la "Win32API de Gestion de Réseau|Structures|USRI3_PROFILE" de la structure. De sorte que le C# équivalente à pInvoke [NetUserEnum] avec le niveau de la spécification des structures retourné dans la mémoire tampon si vous voulais éviter à l'aide de WMI.
Fait amusant: DateTime est retourné comme un Int32 par USRI3_PROFILE de la structure, de sorte que lorsque c'est l'an 2038, la date ne sera plus correct une fois de dépassement d'entier se produit.... #UnixMillenniumBug
OriginalL'auteur C Sharp Conner
J'ai fini par utiliser pInvoke pour "RegQueryInfoKey" en C# pour récupérer LastWriteTime sur la clé de registre de chaque profil trouve dans "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
https://stackoverflow.com/a/45176943/7354452
OriginalL'auteur C Sharp Conner