Identifier un redémarrage

Existe-t-il un “ID de session de démarrage” ou un “horodatage de démarrage” fiable? Pour une installation, je dois détecter qu’un redémarrage planifié a bien eu lieu.

Je suppose que je pourrais faire un MoveFileEx() avec MOVEFILE_DELAY_UNTIL_REBOOT , mais MOVEFILE_DELAY_UNTIL_REBOOT quelque chose de plus facile.

(Nous devons installer un package tiers qui se comporte parfois de manière erratique après une réparation / mise à jour. Dans cet état, l’access au périphérique peut même bloquer le système)

(Windows XP, Vista, 7)

    Apparemment, Windows a l’équivalent de la “disponibilité”. Voici plus d’infos: http://support.microsoft.com/kb/555737

    Si je comprends bien, cela devrait vous dire depuis combien de temps le système a été démarré. Cette information va-t-elle résoudre votre problème?

    Pour des choses comme celles-ci, WMI (Windows Management Instrumentation) est souvent un bon sharepoint départ. Je sais que vous pouvez obtenir directement le temps de disponibilité actuel, ce qui peut vous permettre de déterminer si une machine a récemment redémarré.

    Voici un article de blog avec quelques exemples de code: http://blogs.technet.com/heyscriptingguy/archive/2004/09/07/how-can-i-tell-if-a-server-has-rebooted. aspx

    Selon votre langage d’implémentation, vous souhaiterez probablement extraire le code de requête du vbscript.

    Vous pouvez rechercher dans le journal des événements du système l’événement 6009 à partir de la source EventLog – il s’agit du premier événement enregistré après chaque redémarrage.

    Je pense que la meilleure réponse a déjà été donnée ici: Découvrez si l’ordinateur a redémarré depuis la dernière fois que mon programme a été exécuté?

    Cela semble être le moyen le plus simple. Utilisez GlobalFindAtom() pour voir s’il existe et créez-le avec GlobalAddAtom() , si ce n’est pas le cas. Il persistera au-delà de l’exécution de votre programme. Si votre application s’exécute à nouveau et constate que l’atome existe, alors il ne s’agit pas de la première exécution depuis le redémarrage.

    Si l’ordinateur est redémarré, l’atome n’existera pas, indiquant qu’il s’agit de la première exécution de votre programme depuis le redémarrage.