如何确定Windows是否重启?

时间:2011-06-28 16:30:06

标签: c# wpf

我希望我的WPF应用程序只运行一次。我没问题。
我的问题是如何确定当前窗口是否重新启动?

2 个答案:

答案 0 :(得分:7)

您可以将文件写入磁盘,然后使用MoveFileEx立即将其标记为“重新启动时删除”:

所以在伪代码中:

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
   }
} 

答案 1 :(得分:4)

您可以检查并存储系统正常运行时间以及上次运行时间,并将其与当前正常运行时间进行比较。

Retrieve system uptime using C#

一些psudeocode:

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