2012-07-28 126 views
0

我的應用程序需要在Windows啓動時啓動。所以我寫了一個批處理文件來運行應用程序。c中的啓動腳本#

這是將批處理文件路徑條目寫入註冊表的代碼。

private void RegisterInStartup(bool isChecked) 
{ 
    RegistryKey registryKey = Registry.CurrentUser.OpenSubKey 
      ("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
    if (isChecked) 
    { 
     registryKey.SetValue("ApplicationName", Application.StartupPath+"\\autorun.bat"); 
    } 
    else 
    { 
     registryKey.DeleteValue("ApplicationName"); 
    } 
} 

這是我的批處理文件代碼。

start File.exe 
exit 

當我重新啓動我的系統時,批處理文件正在執行,但應用程序File.exe未執行。

爲什麼會發生這種情況?

+0

「誰能告訴我爲什麼會發生這種情況?」我們可以猜到,但是已經執行了哪些診斷(例如,進程監視器跟蹤)?我會懷疑路徑問題,但需要這些診斷來確認。 – Richard 2012-07-28 14:12:46

+0

PS。爲什麼不直接從'Run'鍵運行應用程序('file.exe')? PPS。該註冊表項涉及該用戶登錄,而不是系統啓動。 – Richard 2012-07-28 14:13:49

+0

是的,我知道,註冊表項是當前用戶 我也試圖直接設置爲(的file.exe)的路徑,但我得到了很多errorlike 的'看到這個消息的結尾的詳細信息,調用 剛剛在(JIT)調試而不是此對話框。 **************例外文本************** System.Data.SQLite.SQLiteException:SQLite錯誤 no such table:t01_shedule' 實際上表格在那裏,當我通過手動運行file.exe時它正在完美工作 – Arun 2012-07-28 14:25:06

回答

0
  1. 手動測試您的批處理文件。點擊它。應用程序是否啓動?
  2. 在註冊表中手動輸入路徑。註冊表項是否有效?
  3. 將註冊表項導出到文件。刪除註冊表並將其與您的程序重新添加並導出並比較這兩個文件。如果1和2在哪裏工作,那麼註冊表項必須有所不同,用這種方法你會發現區別
+0

當我運行批處理文件時,我的應用程序正在運行 並且也完成了第2,3步,沒有區別。 – Arun 2012-07-28 14:20:12

1

批處理文件不是從它存在的目錄啓動的。因此File.exe將不會被找到。用exe替換批處理,或者提供exe的完整路徑。

+0

我怎樣才能設置正確的路徑exe文件? – Arun 2012-07-28 15:53:34

+0

而不是'啓動File.exe'使用'開始'[Full Path Here] \ File.exe' – Darek 2012-07-30 15:11:07