// Copyright (c) 1998 - 1999 Microsoft Corporation #include #include typedef BOOLEAN (*PFnTERMSRVAPPINSTALLMODE) (VOID); typedef BOOLEAN (*PFnCTXGETINIMAPPING) (VOID); BOOL IsTrmSrvInstallMode() { BOOLEAN bReturn = FALSE; BOOL bReturn2 = FALSE; HINSTANCE hKernel = NULL; PFnTERMSRVAPPINSTALLMODE pfnTermsrvAppInstallMode = NULL; PFnCTXGETINIMAPPING pfnCtxGetIniMapping = NULL; hKernel = GetModuleHandleA("kernel32.dll"); if (hKernel) { // Try to get the NT5 API first... pfnTermsrvAppInstallMode = (PFnTERMSRVAPPINSTALLMODE)GetProcAddress( hKernel, "TermsrvAppInstallMode"); if ( pfnTermsrvAppInstallMode ) { bReturn = pfnTermsrvAppInstallMode(); } else { // No NT5 API ==> try the NT40-WTSRV API. // NOTE: Remember this API's output is reverse of the above API pfnCtxGetIniMapping = (PFnCTXGETINIMAPPING)GetProcAddress(hKernel,"CtxGetIniMapping"); if (pfnCtxGetIniMapping) { bReturn = !pfnCtxGetIniMapping(); } } } return bReturn; } int WINAPI WinMain( HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // pointer to command line int nCmdShow // show state of window); ) { BOOL bIsInstallMode; UNREFERENCED_PARAMETER (hInstance); UNREFERENCED_PARAMETER (hPrevInstance); UNREFERENCED_PARAMETER (lpCmdLine); UNREFERENCED_PARAMETER (nCmdShow); bIsInstallMode = IsTrmSrvInstallMode(); if (bIsInstallMode) MessageBoxA( NULL, "TS Install Mode.", "Status", MB_OK ); else MessageBoxA( NULL, "TS Execute Mode.", "Status", MB_OK ); return 0; }