2011-12-13 60 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字段,並在第一次運行應用程序時填寫它。您需要檢查該字段是否已包含值,如果是,則不是第一次運行。

相關問題