2010-12-15 159 views
1

Comment puis-je savoir si un fichier que j'ai créé a été créé pendant la session d'ouverture de session de l'utilisateur actuel? Win32_LogonSession.LogonId est-il vraiment unique par session?Comment puis-je savoir si un fichier que j'ai créé a été créé pendant la session d'ouverture de session de l'utilisateur actuel?

EDIT:
J'écris le fichier et je prévois d'écrire le logonid dans le fichier en tant qu'identifiant. Désolé, ce n'était pas clair avant. J'ai regardé autour mais ma connaissance de win32 n'est pas toujours où elle devrait être - comment je trouve la session de connexion de l'utilisateur exécutant le processus courant?

J'ai juste besoin de trouver un identifiant unique pour la session que je peux utiliser plus tard pour voir si un fichier a été créé pendant la session en cours ou une autre. LogonId est un LUID: c'est un nombre de 64 bits.

Répondre

1

Il est garanti d'être unique entre deux redémarrages, mais un redémarrage de l'OS réinitialise efficacement le pool de valeurs possibles.

Je ne pense pas que vous pouvez l'utiliser dans le but indiqué, sauf si vous pouvez compter sur une combinaison de LogonId, l'heure de création du fichier et le temps de démarrage du système: Si le fichier a été créé avant le démarrage du système ce n'est pas la session en cours qui a créé le fichier, sinon vous pouvez vous fier à la valeur de LogonId pour faire cette distinction. Il y a une mise en garde: le temps de création du fichier peut être ajusté par les utilisateurs, donc beaucoup dépend de votre situation (votre environnement le permet, etc.).

+0

Je viens de mettre à jour ma question. plus de pensées? –

+0

Vous devriez être en mesure d'obtenir le LUID LogonId en appelant OpenProcessToken (ou OpenThreadToken si vous utilisez LogonUser et Impersonate) puis GetTokenInformation avec TokenStatistics et utilisez le champ AuthenticationId de la structure résultante. – martona