我有一個.net應用程序,我需要弄清楚我的應用程序是否運行在啓用了終端服務的Windows設備上。如何在c#中執行此操作?如何檢查我的.NET應用程序是否在終端服務器上運行?
編輯:RDP服務器也可以採取到非服務器類機器,如Windows 7和服務器類機器也可以在RDP沒有終端服務被啓用。
我有一個.net應用程序,我需要弄清楚我的應用程序是否運行在啓用了終端服務的Windows設備上。如何在c#中執行此操作?如何檢查我的.NET應用程序是否在終端服務器上運行?
編輯:RDP服務器也可以採取到非服務器類機器,如Windows 7和服務器類機器也可以在RDP沒有終端服務被啓用。
您可以查詢WMI
Win32_TerminalServiceSetting
類以獲取此信息。看到這個例子:
using System.Management;
//...
//create a management scope object
ManagementScope scope = new ManagementScope("\\\\.\\ROOT\\CIMV2\\TerminalServices");
//create object query
ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_TerminalServiceSetting");
//create object searcher
ManagementObjectSearcher searcher =
new ManagementObjectSearcher(scope, query);
//get a collection of WMI objects
ManagementObjectCollection queryCollection = searcher.Get();
//enumerate the collection.
foreach (ManagementObject m in queryCollection)
{
// access properties of the WMI object
Console.WriteLine("Terminal server enabled : {0}", m["AllowTSConnections"]);
}
參考文獻:
MSDN: Win32_TerminalServiceSetting class
How Can I Determine Whether Terminal Services is Enabled on a Windows Server 2003 Computer?
我試過了。每次它打印終端服務器啓用:1即使它是一個Windows 7. –
Windows 7也可以運行終端服務器服務。它被稱爲遠程桌面服務。 – Ari0nhh
如果當前用戶是通過RDP登錄,那麼您可以檢查 - 但如果你的應用程序是一個服務,難道不工作 – BugFinder
[我如何知道我的應用程序是否在RDP會話中運行]的可能重複(http://stackoverflow.com/questions/295415/how-do-i-tell-if-my-application-is-running- in-an-rdp-session) –
In mo st case,只是有一個返回'true'的函數。快速用戶切換(在大多數客戶機上啓用)使用TS實現。每臺服務器都支持一個(有限數量)的TS會話。基本上,幾乎每臺機器都在運行TS。 –