2

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

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

我可以假设超过 2 个允许的会话意味着一个完整的终端服务器,如果需要的话,我也可以使用 P/Invoke。

4

1 回答 1

1

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

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

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

于 2013-08-16T01:55:21.290 回答