【发布时间】:2015-03-28 10:28:29
【问题描述】:
我有一个可以作为服务安装和启动的程序,或者可以使用 'at' 命令从 SYSTEM 帐户启动。我需要找到一种方法来了解可执行文件是作为服务启动还是从 SYSTEM 帐户启动,这样我才能知道是否需要调用 ServiceBase.Run 或在可执行入口点(主函数)执行其他工作。
Environment.UserInteractive 在这两种情况下都是假的。
WindowsIdentity.GetCurrent().IsSystem 在这两种情况下都为真。
我不想传递任何命令行参数来解决这个问题。
入口点的ReflectedType.BaseType.FullName 也不起作用。
【问题讨论】:
-
作为服务打开并检查其状态?
-
Am I Running as a Service 的可能重复项
-
@HuorSwords 不,不是,因为在这两种情况下,我都以 SYSTEM 帐户运行...
-
关于该问题的已接受答案看起来对您有用 - 它会检查您是否从 ServiceBase 运行。
-
@Richard 好吧,我什至在问这个问题之前就对其进行了测试,在任何情况下 BaseType.FullName 都是 System.Object ...