2011-12-13 57 views
0

我制作了我的窗口应用程序的exe文件。我希望当我的exe安装在系统上并运行第一次machine.I想检查它是否运行第一次系统会自动重启,第一次运行后系统不应该每次都重启。如何检查我的c#窗口应用程序在安装后是否第一次运行

我可以这样做吗?请帮帮我。

在此先感谢。

+0

使用注册表项存储指示应用程序第一次启动的标志。任何注册表在卸载时将如何清除。 – Mahantesh

回答

3

I can't believeI'm saying this,但你想检查一个文件是否存在。

如果文件不存在,请提示用户输入权限,然后创建并重新启动系统。您也可以选择删除与您的应用程序一起部署的临时文件,但我更喜欢创建文件,因为您也可以将该文件用作默认设置文件或初始数据库。

请注意,在这里我从来没有建议从文件中读取,所以这仍然与链接问题中的位置兼容。

我还需要问你为什么要重新启动系统。 没有什么在Windows或在.Net框架需要这个。这可能会让你的用户恼火。

0

我认为你可以使用这个注册表项。在执行应用程序时检查注册表中的某个键,以及是否将其设置为某个值。如果注册表项不存在,则意味着应用程序首次执行。

+1

这里的问题是编写该注册表项需要管理员权限......但后来因为我们正在讨论重新启动系统,这可能不是一件坏事。 –

3

一种选择是使用user's program settings中的值。起初真的,你可以将其设置为false,像这样:

if (Properties.Settings.Default.IsFirstTime) 
{ 
    Properties.Settings.Default.IsFirstTime = false; 
} 

我也建议增加一个“UpgradeRequired”布尔值默认情况下是如此的设置。当用户安装该程序的新版本,你需要调用

Properties.Settings.Default.Upgrade(); 

,并设置

Properties.Settings.Default.UpgradeRequired = false; 

,然后保存设置:

Properties.Settings.Default.Save(); 

这样做的原因是,如果安装新版本,IsFirstTime将被重置为其默认值(除非使用Upgrade()来占用当前值)。

这样,您不必担心注册表,而且您不必担心文件权限。

这就是,把它们放在一起:

// this must happen as soon as your program starts, before 
// you do anything else with the settings 
if (Properties.Settings.Default.UpgradeRequired) 
{ 
    // upgrade FIRST, before doing anything else with the settings 

    Properties.Settings.Default.Upgrade(); 
    Properties.Settings.Default.UpgradeRequired = false; 
    Properties.Settings.Default.Save(); 
} 


if (Properties.Settings.Default.IsFirstTime) 
{ 
    // this is the first time running the program 

    Properties.Settings.Default.IsFirstTime = false; 
    Properties.Settings.Default.Save(); 
} 

这工作就好了为我们的客户。

0

您可以在数据库表中添加一个status_flag字段,并在第一次运行应用程序时填写它。您需要检查该字段是否已包含值,如果是,则不是第一次运行。

相关问题