2011-05-05 137 views
7

我想知道是否可以在登錄窗口之前運行我的應用程序。它實際上是一個WinForm應用程序(最好不是Windows服務)。Windows啓動時運行程序(登錄前)

我的意思是我的應用程序必須運行,甚至在登錄前,應該坐在系統托盤從中我能「秀」或開放接口的用戶。

+6

爲什麼不把它變成服務? – 2011-05-05 11:22:12

+1

服務*不應該*與桌面進行交互,這對於winform應用程序來說可能是一件壞事... – 2011-05-05 11:25:01

+0

如果您的應用程序不是服務,則無法在登錄前啓動應用程序。但是,WinForms應用程序不能成爲服務。所以... – BoltClock 2011-05-05 11:26:09

回答

7

爲了有:系統啓動和用戶登錄之間

  • 事情發生
  • 用戶在通知區域的圖標與

必須與之交互打破你的應用程序成兩個獨立的組件。其中一個將是WinForms/WPF應用程序,它提供通知區域圖標並允許用戶與之交互。另一個將是一個Windows服務,或者可能是一個計劃任務。

一旦你做到了這一點,Windows服務可以集中精力做任何需要之前進行登錄和通知區域的應用程序可以承擔顯示結果,或任何其他給最終用戶的責任。

要回答你的意見提出關於從事件日誌讀取數據的問題,是的,這是可能的。這裏對於其他問題,這將給你特定的答案:

+0

如果在Vista或更高版本上運行計劃任務比服務更好,那麼您不需要修改代碼。這將允許在有UI的情況下根據需要使用管理員帳戶運行該程序,但強烈建議將其分解,以便在用戶帳戶下運行UI,並根據需要使用WCF與托盤圖標進行通信。 – 2011-05-10 06:15:26

+0

我們通過使用一個Main來打破我們的應用程序,並在我們發現服務啓動時掃描「-service」參數。如果我們不推出UI循環 – Wjdavis5 2015-03-25 12:18:43

4

這MS文章可能幫助,但它是一個有點老

http://support.microsoft.com/kb/142905

希望它會把你右邊的軌道,雖然。

+0

它只在用戶登錄時才運行我的應用程序? – 2011-05-05 11:39:31

+0

我不這麼認爲,這個方法實際上是在Shell之前運行的,所以在GUI加載之後,但在Explorer加載之前。它確實聲明你的程序將不得不啓動資源管理器才能讓窗口繼續運行。 – 2011-05-05 13:02:49

2

你可以安排任何應用程序時,計算機上使用Windows任務計劃供電,以運行。那裏有一個相應的選項。 但你爲什麼需要這個?你應該使用這個服務。

3

我認爲,在用戶登錄系統之前獲取用戶輸入沒有任何意義。所以,如果應用程序需要用戶輸入,爲什麼在用戶登錄之前啓動它?如果應用程序剛剛開始一些後臺工作,則應該使用Windows服務,因爲這是Windows中的首選方式。

+0

我的意思是我的應用程序必須在登錄前運行,它應該位於系統托盤上,我可以從其中「顯示」或打開用戶界面 – 2011-05-05 12:14:55

2

鍵入run gpedit.msc,組策略, 在那裏,你可以設置啓動腳本。 應用程序將在Windows登錄之前推出, 步驟產生: -

Start --> Run --> gpedit.msc --> Local Computer Policy --> Windows Settings --> Script (Startup/ShutDown), 

添加您.exe 它將推出登錄之前。 不要嘗試更多的組策略中,有可能發生有害系統

通過編程邏輯, 與註冊表嘗試鍵 該值由我們的程序的註冊表, 更新中,我們可以直接更新註冊表,然後就可以調用應用程序

+3

如果你想把關於你自己的信息做在你的個人資料頁面上。 – agf 2011-08-11 17:16:17