Je voudrais a) programmer et b) déterminer à distance la dernière date/heure qu'un utilisateur a réussi à se connecter à une machine Windows (via le bureau à distance ou sur la console). Je serais prêt à prendre n'importe quel langage Windows typique (C, C#, VB, fichiers batch, JScript, etc ...) mais toute solution serait bien.Comment programmer la dernière heure de connexion à une machine?
Répondre
Essayez ceci:
public static DateTime? GetLastLogin(string domainName,string userName)
{
PrincipalContext c = new PrincipalContext(ContextType.Domain,domainName);
UserPrincipal uc = UserPrincipal.FindByIdentity(c, userName);
return uc.LastLogon;
}
Vous devrez ajouter des références à l'utilisation de l'aide System.DirectoryServices et System.DirectoryServices.AccountManagement
EDIT: Vous pouvez obtenir la dernière date de connexion à une machine spécifique en procédant comme suit:
public static DateTime? GetLastLoginToMachine(string machineName, string userName)
{
PrincipalContext c = new PrincipalContext(ContextType.Machine, machineName);
UserPrincipal uc = UserPrincipal.FindByIdentity(c, userName);
return uc.LastLogon;
}
Vous pouvez utiliser DirectoryServices pour faire en C#:
using System.DirectoryServices;
DirectoryEntry dirs = new DirectoryEntry("WinNT://" + Environment.MachineName);
foreach (DirectoryEntry de in dirs.Children)
{
if (de.SchemaClassName == "User")
{
Console.WriteLine(de.Name);
if (de.Properties["lastlogin"].Value != null)
{
Console.WriteLine(de.Properties["lastlogin"].Value.ToString());
}
if (de.Properties["lastlogoff"].Value != null)
{
Console.WriteLine(de.Properties["lastlogoff"].Value.ToString());
}
}
}
de Grande réponse, toute chance que vous sauriez pour le modifier afin d'inclure des utilisateurs de domaine tels que MYDOMAIN ou au moins un utilisateur de domaine spécifique comme MYDOMAIN \ MYUSER? – esac
Vous pouvez également utiliser CMD
:
C:\Windows\System32>query user /server:<yourHostName>
OU (plus courte)
C:\Windows\System32>quser /server:<yourHostName>
La sortie sera quelque chose comme ceci:
USERNAME SESSIONNAME ID STATE LOGONTIME
userXYZ console 1 Active 19.01.2017 08:59
Après beaucoup de recherches, je réussi à mettre en place un joli script PowerShell wh Je prends un nom d'ordinateur et liste les comptes et la dernière connexion ACTUAL sur l'ordinateur spécifique. ... MICROSOFT N'A JAMAIS PROGRAMMÉ CORRECTEMENT CETTE FONCTION, IL TENTE D'OBTENIR DES INFORMATIONS D'IDENTIFICATION DE L'ANNUAIRE ACTIF ET DE LE CONSERVER LOCALEMENT, AFIN QUE VOUS AYEZ CONNECTÉ AUX AUTRES MACHINES ET QU'IL METTE À JOUR LES DATES DE CONNEXION DE VOTRE MACHINE, MAIS JAMAIS CONNECTÉ DANS VOTRE MACHINE .... ÉCHEC COMPLÈTE!
$REMOTEMACHINE = "LoCaLhOsT"
$NetLogs = Get-WmiObject Win32_NetworkLoginProfile -ComputerName $REMOTEMACHINE
foreach ($NetLog in $NetLogs)
{
if($NetLog.LastLogon)
{
$LastLogon = [Management.ManagementDateTimeConverter]::ToDateTime($NetLog.LastLogon)
if($LastLogon -ne [DateTime]::MinValue)
{
Write-Host $NetLog.Name ' - ' $LastLogon
}
}
}
Note: D'après ce que je peux comprendre, le Win32_NetworkLoginProfile utilise le "Win32API | USER_INFO_3 | Structures de gestion du réseau" structure. Donc, l'équivalent C# serait de pInvoquer [NetUserEnum] avec le niveau spécifiant les structures retournées dans le tampon si vous voulez éviter d'utiliser WMI.
Fait amusant: Le DateTime est retourné comme un Int32 à travers la structure USER_INFO_3, alors quand il est l'année 2038, la date ne sera plus correcte après une débordement d'entier se produit .... #UnixMillenniumBug
je me suis retrouvé à l'aide Pinvoke pour "RegQueryInfoKey" en C# pour récupérer LastWriteTime sur la clé de registre de chaque profil situé sous "HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList"
- 1. Programmer trouver les modifications TFS depuis la dernière bonne construction
- 2. Impossible d'obtenir la base de données pour mettre à jour la dernière heure de connexion en utilisant PHP et MySQL?
- 3. Comment créer automatiquement un fichier avec la dernière heure de compilation et l'inclure dans une bibliothèque?
- 4. Comment créer un nouveau Joda DateTime tronqué à la dernière heure?
- 5. Comment mettre à jour la dernière date de connexion si "Se souvenir de moi" est activé?
- 6. comment utiliser le script de shell vérifiant la dernière heure changée d'un fichier
- 7. Comment obtenir programatically la dernière commettras date à une caisse
- 8. SQL Server - Quelle est la date/heure de la dernière ligne insérée d'une table?
- 9. Réglages de l'alimentation WMI et de l'ordinateur - Date/heure de la dernière mise en veille
- 10. Comment programmer la hauteur de la ligne dans XAML?
- 11. Comment programmer un programme
- 12. erreur lors de la connexion aux services d'analyse de l'application asp.net sur une autre machine
- 13. Ajouter date/heure à la table MySQL?
- 14. Les fonctions date/heure Javascript dépendent-elles de la machine client?
- 15. comment conserver une trace de la dernière modification
- 16. Comment programmer une barre de menu dynamique dans Swing?
- 17. Comment programmer les préférences utilisateur
- 18. Convertir une chaîne avec date et heure à une date
- 19. Programmer l'impression de documents
- 20. Comment programmer un plug-in?
- 21. Comment arrondir une heure dans T-SQL
- 22. Android. Comment se connecter à la machine de développement à partir de l'appareil?
- 23. Comment commencer à apprendre à programmer dans Flex?
- 24. Récupérer la dernière mise à jour enregistrée
- 25. Analyse à distance de la machine
- 26. Comment programmer le niveau actuel de la batterie avec COCOA
- 27. Comment programmer un lecteur de musique simple?
- 28. Insérer une date-heure de serveur à l'aide d'une SqlCommand
- 29. Oracle: Comment puis-je programmer pour que ma connexion actuelle soit supprimée?
- 30. Comment programmer une application audio/vidéo sur un réseau?
Est-ce que cela donne la dernière connexion au domaine, ou à l'ordinateur sur lequel il est exécuté? – esac
Bonne question.MSDN dit ceci: "Obtient le DateTime nullable qui spécifie la date et l'heure de la dernière connexion pour ce compte." Je suppose que cela dépend si ContextType est défini sur Domain ou Machine, mais je ne peux pas le vérifier car je cours sur une machine autonome, mais je pense que si vous utilisez un domaine C'est probablement la dernière connexion réussie pour ce compte sur le domaine –
Darn, j'aime vos deux réponses, mais j'ai vraiment besoin de la dernière heure de connexion d'un utilisateur spécifique à l'ordinateur spécifié – esac