2016-09-14 24 views
0

我有一個.net應用程序,我需要弄清楚我的應用程序是否運行在啓用了終端服務的Windows設備上。如何在c#中執行此操作?如何檢查我的.NET應用程序是否在終端服務器上運行?

編輯:RDP服務器也可以採取到非服務器類機器,如Windows 7和服務器類機器也可以在RDP沒有終端服務被啓用。

+0

如果當前用戶是通過RDP登錄,那麼您可以檢查 - 但如果你的應用程序是一個服務,難道不工作 – BugFinder

+0

[我如何知道我的應用程序是否在RDP會話中運行]的可能重複(http://stackoverflow.com/questions/295415/how-do-i-tell-if-my-application-is-running- in-an-rdp-session) –

+0

In mo st case,只是有一個返回'true'的函數。快速用戶切換(在大多數客戶機上啓用)使用TS實現。每臺服務器都支持一個(有限數量)的TS會話。基本上,幾乎每臺機器都在運行TS。 –

回答

0

您可以查詢WMIWin32_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?

+0

我試過了。每次它打印終端服務器啓用:1即使它是一個Windows 7. –

+0

Windows 7也可以運行終端服務器服務。它被稱爲遠程桌面服務。 – Ari0nhh

相關問題