2011-05-21 51 views
1

我就必須在Windows上運行啓動一個項目,C# - 在啓動應用程序崩潰(Windows 7)中

我曾嘗試使用:

  RegistryKey rkApp = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true); 
      rkApp.SetValue("1234", path + @"\xxxx.exe"); 
      rkApp.Close(); 

它開始與Windows但馬上崩潰(「應用程序已停止工作的窗口正在檢查...」。

當我嘗試調試它,它不會崩潰。

我該如何解決呢?

+0

你是如何在Windows啓動時啓動應用程序的?用戶模式應用程序只有在用戶登錄後才能運行。 – 2011-05-21 16:27:11

+0

它是在Windows 7上運行的窗口服務器 – Praneeth 2011-05-21 16:32:54

+2

您的意思是** Windows服務**嗎?如果是這樣,那麼這將永遠不能正常工作。顯而易見的問題是當系統啓動時沒有用戶登錄,所以['Registry.CurrentUser'](http://msdn.microsoft.com/en-us/library/microsoft.win32.registry.currentuser .aspx)是沒有意義的。它不會在您因爲您登錄而進行調試時崩潰。 – 2011-05-21 16:43:35

回答

6

不要猜測,寫代碼可以幫助您診斷未處理的異常。編寫AppDomain.CurrentDomain.UnhandledException事件的事件處理程序,並記錄或顯示e.ExceptionObject.ToString()的值。您將得到的堆棧跟蹤將幫助您快速診斷原因。我會猜測你的代碼轟炸,因爲應用程序的默認目錄沒有設置在調試時的位置。使用文件的完整路徑名稱(即c:\ foo \ bar.txt,而不是bar.txt)。

1

檢查您是否有延遲計時器以保持服務正常運行。如果服務沒有工作,它會立即啓動並停止。嘗試將事件記錄到事件記錄器中。

0

訪問註冊表受安全控制。檢查您發佈的分支對於應用程序運行的用戶是可寫的。

+1

這段代碼並不真正相關。它只是在那裏顯示如何將程序添加到啓動的東西。 – Mario 2011-05-21 21:44:32

0

「應用程序崩潰」意味着您有未處理的例外%90。你需要記錄那個例外是否有解決這個問題的任何希望。