Windows重启后如何恢复C#应用程序

Windows重启后如何恢复C#应用程序,c#,winforms,C#,Winforms,我正在尝试使用Winforms逐个安装IIS和SQL Server。。。但在安装IIS之后。系统需要重新启动,重新启动后,只需再次开始安装相同的IIS即可 所以我需要知道重新启动后如何恢复应用程序。。 有人帮我举个好例子吗?基本概述:要在引导后重新启动,有几种方法。您可以在autostart目录中输入指向安装程序的链接,或者使用RunOnce注册表项(如Zhaph-Ben Duguid所建议的,请参见下文)。当您的安装程序再次运行时,请查看是否已经存在以前安装的保存状态,如果是,请加载此状态 要

我正在尝试使用Winforms逐个安装IIS和SQL Server。。。但在安装IIS之后。系统需要重新启动,重新启动后,只需再次开始安装相同的IIS即可

所以我需要知道重新启动后如何恢复应用程序。。
有人帮我举个好例子吗?

基本概述:要在引导后重新启动,有几种方法。您可以在autostart目录中输入指向安装程序的链接,或者使用RunOnce注册表项(如Zhaph-Ben Duguid所建议的,请参见下文)。当您的安装程序再次运行时,请查看是否已经存在以前安装的保存状态,如果是,请加载此状态

要保存状态,请创建包含要还原的状态的类。在要还原的每个类上方写入[Serializable],如下所示

[Serializable]
class InstallationState
{
    // whatever you do
}
然后

将您的状态保存到文件并

if (File.Exists(filename)) 
{
    FileStream stream = File.OpenRead(filename);
    BinaryFormatter formatter = new BinaryFormatter();
    InstallationState myInstallationState= (InstallationState ) formatter.Deserialize(stream);
    stream.Close();

    return result;
}
else return null;
重新启动后,从文件中重新加载状态


安装成功后,不要忘记删除序列化文件(表示安装尚未完成)和autostart中指向程序的链接。

您需要将状态保存在某个位置,稍后再阅读。但是,这是解决堆栈溢出的一种方法。您还需要写入RunOnce注册表项并添加对exe的调用,以便在用户重新登录时执行该调用。@nvoigt我想PO会询问如何在操作系统启动时自动重新运行应用程序。因为它不显示已存在的答案。看看我的答案是否对你有用,然后自己探索其余的问题。这回答了“如何恢复我的状态”,但没有回答“如何在重新启动后重新启动我的应用程序”。是的,但这不是很琐碎吗?我会这么说,是的,但这似乎是要问的问题。正如Steve Harris在评论中指出的那样,一种选择是写入RunOnce注册表项。不过,更好的选择可能是使用Windows所需的状态配置工具完全按照需要安装IIS和SQL,这将为您处理重新启动等问题。
if (File.Exists(filename)) 
{
    FileStream stream = File.OpenRead(filename);
    BinaryFormatter formatter = new BinaryFormatter();
    InstallationState myInstallationState= (InstallationState ) formatter.Deserialize(stream);
    stream.Close();

    return result;
}
else return null;