我需要检查Windows窗体应用程序和Windows服务引用的共享库中包含的方法。
当我们在控制台模式下进行检查时,我必须允许潜在的对话框。如果是windows服务,我会在事件日志中写消息。
我发现使用编译指令可以做很多方法。是否有一种不同的,更优雅的方法?
由于
答案 0 :(得分:3)
如果您的应用程序作为Windows服务运行,您可以检查Environment.UserInteractive属性,该属性将返回false。
答案 1 :(得分:1)
是的,确实如此。在运行时,您可以检查进程父级是否为services.exe,或者当前进程是否为svchost.exe。或者,您可以使用WinApi查询服务控制管理器,无论您的服务是否已启动且当前进程ID是否等于已启动服务的进程ID。
这个答案在C#中有一些示例代码:
How do we tell if a C++ application is launched as a Windows service?