2011-06-28 4 views
0

Je veux que mon application WPF soit exécutée une seule fois. Je n'ai aucun problème avec ça.
Mon problème est comment puis-je déterminer si Windows a redémarré?Comment déterminer si windows a redémarré?

+2

Êtes-vous désireux cette application WPF pour redémarrer automatiquement lorsque Windows redémarre? Je pense qu'un peu plus d'informations sont nécessaires sur ce que vous essayez de faire exactement. –

Répondre

4

Vous pouvez vérifier et stocker la disponibilité du système avec la dernière durée d'exécution et la comparer avec la disponibilité actuelle.

Retrieve system uptime using C#

Certains psudeocode:

DateTime computerLastStarted = Now - Uptime; 
    if (computerLastStarted > storedComputerLastStarted + or - tollerance) { 
     storedComputerLastStarted = computerLastStarted; 
     StartProgram(); 
    } 
6

Vous pouvez écrire un fichier sur le disque, puis marquer immédiatement comme 'supprimer le redémarrage' à l'aide MoveFileEx:

Ainsi, dans psuedocode:

if(File.Exists(CheckFileName)) 
    return false; // already ran once 
else { 
    // write out the check file 
    using(checkFile = File.Create(CheckFileName, ...)) { 
     // and mark it as delete on boot 
     MoveFileEx(checkFile.SafeHandle, 
     null, 
     MOVEFILE_DELAY_UNTIL_REBOOT); 
     return true; // ok to run 
    } 
} 
+0

+1 approche cool. –

Questions connexes