【问题标题】:Check whether application is running under Terminal Services as opposed to Remote Desktop检查应用程序是否在终端服务而不是远程桌面下运行
【发布时间】:2013-08-15 23:06:01
【问题描述】:

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

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

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

【问题讨论】:

  • 我很好奇这些信息会有什么帮助。我不知道 RDS API 中有什么会暴露这一点。您可能会检查服务器是否配置了 RD 许可服务器。
  • @DanPorts - 该信息将很有帮助,因为该软件无法在终端服务环境中使用是一项业务需求。

标签: c# .net terminal-services


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 2016-07-17
    • 2021-05-05
    相关资源
    最近更新 更多