/* * TSUtil.c * * Author: BreenH * * Terminal Services utilities. */ /* * Includes */ #include "precomp.h" #include "tsutil.h" /* * Function Implementations */ BOOL WINAPI IsFullTerminalServicesEnabled( VOID ) { BOOL fRet; DWORDLONG dwlConditionMask; OSVERSIONINFOEX osVersionInfo; RtlZeroMemory(&osVersionInfo, sizeof(OSVERSIONINFOEX)); osVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); osVersionInfo.wProductType = VER_NT_SERVER; osVersionInfo.wSuiteMask = VER_SUITE_TERMINAL; dwlConditionMask = 0; VER_SET_CONDITION(dwlConditionMask, VER_PRODUCT_TYPE, VER_EQUAL); VER_SET_CONDITION(dwlConditionMask, VER_SUITENAME, VER_OR); fRet = VerifyVersionInfo( &osVersionInfo, VER_PRODUCT_TYPE | VER_SUITENAME, dwlConditionMask ); return(fRet); } BOOL WINAPI IsPersonalTerminalServicesEnabled( VOID ) { BOOL fRet; DWORDLONG dwlConditionMask; OSVERSIONINFOEX osVersionInfo; RtlZeroMemory(&osVersionInfo, sizeof(OSVERSIONINFOEX)); osVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); osVersionInfo.wProductType = VER_NT_WORKSTATION; osVersionInfo.wSuiteMask = VER_SUITE_SINGLEUSERTS; dwlConditionMask = 0; VER_SET_CONDITION(dwlConditionMask, VER_PRODUCT_TYPE, VER_EQUAL); VER_SET_CONDITION(dwlConditionMask, VER_SUITENAME, VER_OR); fRet = VerifyVersionInfo( &osVersionInfo, VER_PRODUCT_TYPE | VER_SUITENAME, dwlConditionMask ); return(fRet); } BOOL WINAPI IsTerminalServicesEnabled( VOID ) { BOOL fRet; DWORDLONG dwlConditionMask; OSVERSIONINFOEX osVersionInfo; RtlZeroMemory(&osVersionInfo, sizeof(OSVERSIONINFOEX)); osVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); osVersionInfo.wSuiteMask = VER_SUITE_TERMINAL | VER_SUITE_SINGLEUSERTS; dwlConditionMask = 0; VER_SET_CONDITION(dwlConditionMask, VER_SUITENAME, VER_OR); fRet = VerifyVersionInfo(&osVersionInfo, VER_SUITENAME, dwlConditionMask); return(fRet); } BOOL WINAPI IsPersonalWorkstation( VOID ) { BOOL fRet; DWORDLONG dwlConditionMask; OSVERSIONINFOEX osVersionInfo; RtlZeroMemory(&osVersionInfo, sizeof(OSVERSIONINFOEX)); osVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); osVersionInfo.wProductType = VER_NT_WORKSTATION; osVersionInfo.wSuiteMask = VER_SUITE_PERSONAL; dwlConditionMask = 0; VER_SET_CONDITION(dwlConditionMask, VER_PRODUCT_TYPE, VER_EQUAL); VER_SET_CONDITION(dwlConditionMask, VER_SUITENAME, VER_OR); fRet = VerifyVersionInfo( &osVersionInfo, VER_PRODUCT_TYPE | VER_SUITENAME, dwlConditionMask ); return(fRet); } // Is this machine an Advanced Server or above BOOL WINAPI IsAdvancedServer( VOID ) { BOOL fRet; DWORDLONG dwlConditionMask; OSVERSIONINFOEX osVersionInfo; BOOL fSuiteAdvancedServer = FALSE; BOOL fSuiteDataCenter = FALSE; RtlZeroMemory(&osVersionInfo, sizeof(OSVERSIONINFOEX)); osVersionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); dwlConditionMask = 0; VER_SET_CONDITION(dwlConditionMask, VER_SUITENAME, VER_AND); osVersionInfo.wSuiteMask = VER_SUITE_ENTERPRISE; fSuiteAdvancedServer = VerifyVersionInfo(&osVersionInfo, VER_SUITENAME, dwlConditionMask); osVersionInfo.wSuiteMask = VER_SUITE_DATACENTER; fSuiteDataCenter = VerifyVersionInfo(&osVersionInfo,VER_SUITENAME,dwlConditionMask); fRet = fSuiteAdvancedServer || fSuiteDataCenter; return(fRet); }