Share via


Scripting: Check if a W2K3 box is running Terminal Server in Application Mode

I was recently asked (two hours ago) how to tell if a server was running Terminal Services in Application Mode.  The customer wanted to run a different script if users were logged into a Terminal Server.

They had looked through the registry and came across the TSEnabled value in :

HKLM\Software\System\CurrentControlSet\Control\Terminal Server

While this key does indicate whether or not TS is enabled, it does not tell you if the server is in Application Mode.  To compound the issue this key is also set to 1 by default on Windows XP.  So, surely there was a more appropriate way to check?  Indeed there is … the Win32_TerminalServiceSetting WMI class will allow you to check.  See the code below:

Dim strComputer, objWMIService, colClass, objClass, strTSMode

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colClass = objWMIService.ExecQuery("Select * from Win32_TerminalServiceSetting")

For Each objClass in colClass

    strTSMode = objClass.TerminalServerMode

    If strTSMode = 1 Then

        Wscript.Echo "Terminal Server is in Application Server mode."

    Else

        Wscript.Echo "Terminal Server is in Remote Administration mode."

    End If

Next

Note: This will not work under Windows 2000 as the WMI class does not exist.  I have not checked it in Windows 2008.