开始在Windows中执行exe文件,重新启动计算机,然后选择进程停止的位置

Mef*_*to1 5 .net c#

这是可能吗?如果是这样,怎么样?流程将是这样的:

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() {}
Run Code Online (Sandbox Code Playgroud)

所有这些代码都是一个Windows服务,所以如果 pc重新启动并且直接进入,那么告诉OnStart方法跳过的"最佳"方式是什么,因为服务将被设置为自动启动.DoStuff DoStuffAfterRestart

Ale*_*x H 2

不知道是否有特殊方法,但我会有一个解决方案:

将您的程序添加到自动启动中。编辑:就像@PTwr 指出的那样,您不应该使用正常的自动启动。请改用“运行一次”注册表项

将代码更改为如下所示:

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() {}
Run Code Online (Sandbox Code Playgroud)

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

通过保存“当前位置”,您可以“记住”上次所在的位置,并在重新启动后执行正确的操作。

  • 不要使用旧的“自动启动”,特别是如果您只想运行它一次。请改用 [RunOnce 注册表项](https://msdn.microsoft.com/en-us/library/windows/desktop/aa376977(v=vs.85).aspx)。 (3认同)