[英]Is it possible to detect if the main application thread is running as a Windows Service without using a compilation directive?
我需要在Windows窗體應用程序和Windows服務引用的共享庫中包含的方法中進行檢查。
在控制台模式下進行檢查時,我必須允許潛在的對話框。 如果使用Windows服務,我將在事件日志中寫入消息。
我發現了使用編譯指令來執行此操作的多種方法。 有另外一種更優雅的方法嗎?
謝謝
您可以檢查Environment.UserInteractive屬性,如果您的應用程序作為Windows服務運行,則該屬性將返回false。
是的。 在運行時,您可能會檢查進程父進程是services.exe還是當前進程是svchost.exe。 或者,您可以使用WinApi向服務控制管理器查詢您的服務是否已啟動並且當前進程ID是否等於已啟動的服務之一。
這個答案在C#中有一些示例代碼:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.