代码之家  ›  专栏  ›  技术社区  ›  Mefhisto1

开始在windows中执行一个exe文件,重新启动计算机,然后恢复进程停止的位置

  •  5
  • Mefhisto1  · 技术社区  · 9 年前

    这有可能吗?如果是,怎么办?流程大致如下:

    private void DoStuff() 
    {
       // Do some stuff
       RestartPc();
    }
    
    private void RestartPc()
    {
       Process.Start("shutdown", "/r /t 0"); 
    }
    
    // Call this when the PC is restarted:
    private void DoStuffAfterRestart() {}
    

    所有这些代码将是 windows服务 ,那么什么是告诉 OnStart 要跳过的方法 DoStuff 如果 电脑已重新启动并直接转到 DoStuffAfterRestart 因为服务将被设置为自动启动。

    1 回复  |  直到 9 年前
        1
  •  2
  •   Alex H    9 年前

    Idk如果有特殊的方法,但我会有一个解决方案:

    将程序添加到自动启动。编辑:就像@PTwr指出的那样,你不应该使用正常的自动启动。使用 Run once registry key 相反

    将代码更改为如下内容:

    public static void main(string[] args)
    {
        var x = loadState();
        if(x == null)
            DoStuff();
        else
            DoStuffAfterRestart();
    }
    
    private void DoStuff() 
    {
       // Do some stuff
       SafeState();
       RestartPc();
    }
    
    // Call this when the PC is restarted:
    private void DoStuffAfterRestart() {}
    

    在安全/加载方法中,您必须向文件/注册表中写入一些内容以记住当前状态

    通过保存您的“当前位置”,您可以“记住”上次的位置,并在重新启动后做正确的事情。