如何检查可执行文件是作为服务启动还是从SYSTEM帐户启动?

时间:2015-03-27 09:03:54

标签: c# windows

我有一个可以作为服务安装和启动的程序,或者可以使用' at'从SYSTEM帐户启动。命令。我需要找到一种方法来了解可执行文件是作为服务启动还是从SYSTEM帐户启动,因此我可以知道是否需要调用ServiceBase.Run或在可执行入口点执行其他工作(主要功能)。

在这两种情况下,

Environment.UserInteractive都是假的。

在这两种情况下,

WindowsIdentity.GetCurrent().IsSystem都是正确的。

我不想传递任何命令行参数来解决这个问题。

切入点ReflectedType.BaseType.FullName也无效。

1 个答案:

答案 0 :(得分:0)

您可以尝试查看流程的父级。

public static bool IsRunningAsService() 
{
    return Process.GetCurrentProcess().Parent().ProcessName == "services";
}