2010-04-05 88 views
8

我在C#中的Visual Studio 2008中創建了一個Windows服務。服務裏面我寫了只有一行代碼Windows服務不工作

try 
{ 
    System.Diagnostics.Process.Start(@"E:\Users\Sk\Desktop\category.txt"); 
} 
catch { } 

然後我加入項目安裝&改變將ServiceProcessInstaller1帳戶屬性作爲本地系統也改變了serviceInstaller1啓動類型屬性作爲自動。 然後我建立了project.it成功了。之後,我添加了另一個項目,該項目是安裝project.i添加了主項目輸出&我已經添加了自定義操作作爲「DemoWindowsService(主動)的主要輸出」。然後構建setup.setup被構建成功。然後我安裝設置&然後去服務啓動service.service正確說,但它沒有執行任務。 我測試過的路徑是正確的&也是我試圖做

System.Diagnostics.Process.Start(@"E:\Windows\system32\notepad.exe")但還是結果是same.i嘗試了很多,但沒有得到答案。

+0

你是在哪裏寫你提到的代碼(在該方法中我的意思)?你的實際目標是什麼?你爲什麼只想打開記事本?你能解釋一下嗎? – 2010-04-05 07:51:41

回答

2

如果它不工作,那可能是因爲引發了異常。但是,由於您使用try/catch塊隱藏了所有異常,因此您永遠不會知道什麼是錯誤的。

擺脫try/catch塊,看看是否可以幫助你瞭解什麼是錯的。

+0

對,我正要對那個空的catch塊發表評論。 – 2010-04-05 08:04:04

+0

@ prateeksaluja20:另外,檢查'eventvwr'是什麼錯誤。 – 2010-04-05 08:48:22

+0

@KMan:除了事件查看器不會因爲catch塊而顯示任何內容! – 2010-04-05 10:59:00

6

默認情況下,Windows服務無法與桌面交互,記事本是一種交互式應用程序。

如果打開任務管理器,我懷疑你會看到notepad.exe進程在運行,你開始你的服務後,你的服務是做什麼的,你想,它只是不可見。

您可以更改服務與桌面互動右鍵單擊它在服務 MMC管理單元(Start -> Run -> Services.msc),並檢查允許服務與Log On選項卡上桌面交互選項。

依靠這個選項是不是推薦,但是微軟已經表示他們會在更高版本的Windows中刪除它。

因爲即使沒有人登錄到計算機(例如,沒有「桌面」進行交互),Windows服務也可以使用,所以您可以考慮使用它。

+0

Thanx爲您的答案。 – PrateekSaluja 2010-04-05 10:05:40

0

您是否在服務中的OnStart()方法中編寫了單行代碼? 如果是這樣,則將您的catch塊更改爲catch (Exception ex),並將異常詳細信息寫入事件日誌以查看發生異常的原因。

Logging Information About Services