检查应用程序是否在终端服务下运行而不是远程桌面

时间:2013-08-15 23:06:02

标签: c# .net terminal-services

我有一个.NET应用程序,我需要能够出于许可的原因禁止在终端服务服务器上运行它。我知道SystemInformation API来确定程序是否在远程会话下运行(例如this question中详述)。但是,该API不区分在具有2个允许的远程桌面会话的普通服务器上运行的应用程序和可能在其上运行500个会话的完整终端服务器。

是否有一种简单的编程方式可以确定应用程序是否在完整的终端服务器上运行?

我很好,假设超过2个允许的会话意味着一个完整的终端服务器,如果这是必需的话,我对P / Invoke也很好。

1 个答案:

答案 0 :(得分:1)

一种方法是使用以下代码:

    string s = System.Environment.GetEnvironmentVariable("SessionName");

如果s的值是“Console”,它可能在终端服务中运行。另一方面,如果值类似于“RDP-Tcp#01”,则它在远程桌面下运行。