Windows服務和標準exe文件有什麼區別?Windows服務與標準exe有什麼不同?
回答
一旦計算機啓動,Windows服務將始終運行(只要它已經這樣配置)。標準EXE只在用戶登錄時運行,如果用戶註銷,將會停止。
你會使用的東西,總是需要甚至可以運行,如果沒有人登錄的窗口服務。
你可以使用一個標準EXE了,雖然登錄的用戶運行的程序。
一服務是(通常)是沒有UI的標準exe。即使沒有用戶登錄到計算機,它也可以運行,並且它的訪問權限和文件系統視圖不依賴於用戶登錄的內容。
不是100%準確。服務必須滿足一些額外的要求,而不是沒有UI的標準exe。 – 2010-01-24 04:23:41
是的一些要求,以及它可以訪問的不同API,但仍然是標準的EXE。 – 2010-01-24 04:24:49
SQL Server代理服務不具有交通燈界面嗎?如果我沒有弄錯,那是一項服務嗎? – LearningCSharp 2010-01-24 05:22:01
Windows服務具有特殊的ServiceMain
函數,並且必須響應服務控制管理器(SCM)命令正確,以便作爲服務發揮功能。另一方面,常規可執行文件具有main
或WinMain
函數,並且不需要響應任何特定的控制命令。
技術上正確,但我認爲它不會很好地回答這個問題。 (見Eric J的回答)。 – Ash 2010-01-24 05:11:00
格雷格和埃裏克的答案有效,但我只能將其中一個標記爲正確:-( – LearningCSharp 2010-01-24 05:20:10
我絕對認爲這是一個比所選擇的更正確的答案,另一個答案更好地回答了「什麼是Windows服務」的問題。 – 2013-04-07 04:03:25
如果你在談論實現後臺操作,這裏的標準是我建議選擇一個服務或一個窗口少的.exe:
選擇一個exe文件,如果:
- 你需要它運行在每個用戶的基礎上,只有當用戶登錄
- 你需要它來與Windows桌面(通知圖標等)進行交互
- 它需要所有日誌記錄的特權,在用戶(不多,不少於)
選擇一個服務,如果:
- 它可能需要運行時沒有人在
- 記錄它一般不需要每用戶數據或特權
- 它僅與通信網絡
- 它需要公開新的「安全」對象。具有自己的聲明性訪問控制列表(DACL)的對象限制對某些帳戶/組的訪問。
- 它需要特殊的權限,可能對登錄用戶不可用。
服務能夠輕鬆安全漏洞,所以喜歡的.exe對服務。有時你會需要兩個。病毒檢查程序需要能夠訪問文件系統上的每個文件(當前用戶可能無法做到這一點),但它還需要以通知對話框/彈出窗口和工具的形式向用戶提供信息任務欄圖標。服務不能直接與用戶的GUI交互。他們可以使用標準的Windows IPC(進程間通信)服務,例如管道和共享內存區域。這些工具通常具有服務和每個用戶的無窗口.exe,該服務使用Windows管道或共享內存區域與服務進行通信。
得到「編程Windows安全」基思·布朗,如果你想潛入這些話題。
Minor nit:DACL中的D代表Discretionary – 2010-01-24 04:58:01
「它只與網絡通信」,這是不正確的,服務可以做很多其他事情而不是網絡訪問 – Ash 2010-01-24 05:04:14
並非所有的Win32/64服務都只與網絡通信,但所有隻需要與網絡進行通信的守護進程在Win32/64上進行編程時幾乎都可以最好地實現爲服務。我希望列表描述服務有意義的場景,而不是限制Windows服務的每個用例。 – 2010-01-24 06:20:05
從EXE Binary的角度來看,從編譯器的C庫的角度來看,Windows服務看起來就像一個標準的Unix程序或Windows控制檯程序。即與main()
切入點。使服務不同的是Microsoft Windows(從註冊表通常在啓動時)加載/調用它的方式。服務可以(也應該)通過Windows API調用告訴SC.exe應用程序[服務控制管理器],服務啓動,停止,暫停等。
- 1. 什麼是Windows服務?它的生命週期與「標準」EXE有什麼不同?
- 2. fancyBox3的行爲與Windows服務器(IIS)有什麼不同?
- 3. 什麼是「Clean C」,它與標準C有什麼不同?
- 4. Windows服務啓動和Exe
- 5. Watson Tone Analyzer服務的API或功能與標準和高級計劃有什麼不同?
- 6. 與WCF和其他Web服務有什麼不同?
- 7. Apache Tomcat服務器中的Catalina.jar是什麼?它與servlet-api.jar有什麼不同?
- 8. 爲什麼base64使用CryptoJS與標準的base64編碼不同?
- 9. 什麼是Windows服務?它們與其他.NET應用程序有什麼不同?
- 10. Data.Void.absurd與⊥有什麼不同?
- 11. 「((...))」與「(...)」有什麼不同?
- 12. 獨立Windows .exe與安裝程序有什麼區別?
- 13. 爲什麼Apache2(Ubuntu)與Apache(Windows上的easyPHP服務器)運行不同?
- 14. 編譯WindRiver Linux內核模塊與標準桌面版本有什麼不同?
- 15. -ms-view-state與標準CSS Media Queries表達式有什麼不同?
- 16. 爲什麼Windows服務不能正常工作與System.Timers.Timer或System.Windows.Forms.Timer
- 17. Web服務和Windows服務之間有什麼區別?
- 18. 不同的線程在與Windows服務不同的定時器
- 19. 微服務與webservices有什麼區別?
- 20. WCF服務與Windows服務
- 21. 服務類和類沒有活動有什麼不同
- 22. svctraceviewer exe在Windows 2008企業服務器
- 23. 將IKVM exe作爲Windows服務運行
- 24. 多個Windows服務在一個exe
- 25. 爲什麼Windows和Linux之間的標準庫函數名稱不同?
- 26. 爲什麼Web服務是實現SOA的首選標準?
- 27. 爲什麼EJB計時器服務使用Singleton作爲標準?
- 28. 廢棄WCF服務調用的標準做法是什麼?
- 29. Android應用服務器的工業標準是什麼?
- 30. SQL服務器:有多個標準
這也是一個很好的[post](http: //superuser.com/questions/209654/whats-the-difference-between-an-application-process-and-services) – 2015-09-15 13:53:41