我有一个可以作为服务安装和启动的程序,或者可以使用' at'从SYSTEM帐户启动。命令。我需要找到一种方法来了解可执行文件是作为服务启动还是从SYSTEM帐户启动,因此我可以知道是否需要调用ServiceBase.Run或在可执行入口点执行其他工作(主要功能)。
在这两种情况下, Environment.UserInteractive
都是假的。
WindowsIdentity.GetCurrent().IsSystem
都是正确的。
我不想传递任何命令行参数来解决这个问题。
切入点ReflectedType.BaseType.FullName
也无效。
答案 0 :(得分:0)
您可以尝试查看流程的父级。
public static bool IsRunningAsService()
{
return Process.GetCurrentProcess().Parent().ProcessName == "services";
}