diff --git a/meshconsole/MeshConsole.vcxproj b/meshconsole/MeshConsole.vcxproj index 630ca50..74ea017 100644 --- a/meshconsole/MeshConsole.vcxproj +++ b/meshconsole/MeshConsole.vcxproj @@ -357,7 +357,7 @@ Async - SetupAPI.lib;Crypt32.lib;Ncrypt.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;..\openssl\libstatic\libcrypto32MTd.lib;..\openssl\libstatic\libssl32MTd.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Crypt32.lib;Ncrypt.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;..\openssl\libstatic\libcrypto32MTd.lib;..\openssl\libstatic\libssl32MTd.lib;%(AdditionalDependencies) /ignore:4099 %(AdditionalOptions) $(OutDir)$(TargetName)$(TargetExt) @@ -381,7 +381,7 @@ Async - SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) /ignore:4099 %(AdditionalOptions) $(OutDir)$(TargetName)$(TargetExt) @@ -405,7 +405,7 @@ Async - SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) /ignore:4099 %(AdditionalOptions) $(OutDir)$(TargetName)$(TargetExt) @@ -429,7 +429,7 @@ Async - SetupAPI.lib;Crypt32.lib;Ncrypt.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;..\openssl\libstatic\libcrypto32MT.lib;..\openssl\libstatic\libssl32MT.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Crypt32.lib;Ncrypt.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;..\openssl\libstatic\libcrypto32MT.lib;..\openssl\libstatic\libssl32MT.lib;%(AdditionalDependencies) /ignore:4099 %(AdditionalOptions) $(OutDir)$(TargetName)$(TargetExt) @@ -456,7 +456,7 @@ Async - SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) /ignore:4099 %(AdditionalOptions) $(OutDir)$(TargetName)$(TargetExt) @@ -483,7 +483,7 @@ Async - SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) /ignore:4099 %(AdditionalOptions) $(OutDir)$(TargetName)$(TargetExt) @@ -510,7 +510,7 @@ Async - SetupAPI.lib;Crypt32.lib;Ncrypt.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;..\openssl\libstatic\libcrypto64MTd.lib;..\openssl\libstatic\libssl64MTd.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Crypt32.lib;Ncrypt.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;..\openssl\libstatic\libcrypto64MTd.lib;..\openssl\libstatic\libssl64MTd.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) /ignore:4099 %(AdditionalOptions) @@ -534,7 +534,7 @@ Async - SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) /ignore:4099 %(AdditionalOptions) @@ -558,7 +558,7 @@ Async - SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) /ignore:4099 %(AdditionalOptions) @@ -582,7 +582,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;Crypt32.lib;Ncrypt.lib;ws2_32.lib;..\openssl\libstatic\libcrypto64MT.lib;..\openssl\libstatic\libssl64MT.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;Crypt32.lib;Ncrypt.lib;ws2_32.lib;..\openssl\libstatic\libcrypto64MT.lib;..\openssl\libstatic\libssl64MT.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) /ignore:4099 %(AdditionalOptions) @@ -609,7 +609,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;Bcrypt.lib;Crypt32.lib;ws2_32.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;Bcrypt.lib;Crypt32.lib;ws2_32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) /ignore:4099 %(AdditionalOptions) @@ -636,7 +636,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;Bcrypt.lib;Crypt32.lib;ws2_32.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;Bcrypt.lib;Crypt32.lib;ws2_32.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) /ignore:4099 %(AdditionalOptions) diff --git a/meshcore/KVM/Windows/input.c b/meshcore/KVM/Windows/input.c index 4ac8ec1..7e1e811 100644 --- a/meshcore/KVM/Windows/input.c +++ b/meshcore/KVM/Windows/input.c @@ -478,9 +478,10 @@ int g_TouchLoadLibraryState = 0; int TouchInit() { + // These functions only exist on Windows 8 and above, so it's ok that the SYSTEM32 flag requires Win 7 SP2 _InitializeTouchInjection init = NULL; if (g_TouchLoadLibraryState > 0) return g_TouchLoadLibraryState; - g_TouchLoadLibrary = LoadLibraryExA((LPCSTR)"User32.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); + g_TouchLoadLibrary = LoadLibraryExA((LPCSTR)"User32.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); if (g_TouchLoadLibrary == NULL) { g_TouchLoadLibraryState = 2; return 2; } init = (_InitializeTouchInjection)GetProcAddress(g_TouchLoadLibrary, "InitializeTouchInjection"); g_TouchInjectionCall = (_InjectTouchInput)GetProcAddress(g_TouchLoadLibrary, "InjectTouchInput"); diff --git a/meshcore/KVM/Windows/kvm.c b/meshcore/KVM/Windows/kvm.c index 9e642f7..25ed76c 100644 --- a/meshcore/KVM/Windows/kvm.c +++ b/meshcore/KVM/Windows/kvm.c @@ -29,6 +29,7 @@ limitations under the License. #include "microstack/ILibAsyncSocket.h" #include "microstack/ILibProcessPipe.h" #include "microstack/ILibRemoteLogging.h" +#include #if defined(WIN32) && !defined(_WIN32_WCE) && !defined(_MINCORE) #define _CRTDBG_MAP_ALLOC @@ -155,69 +156,12 @@ void kvm_setupSasPermissions() // Emulate the CTRL-ALT-DEL (Should work on WinXP, not on Vista & Win7) DWORD WINAPI kvm_ctrlaltdel(LPVOID Param) { - OSVERSIONINFO osv; - UNREFERENCED_PARAMETER( Param ); - KVMDEBUG("kvm_ctrlaltdel", (int)Param); - - osv.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - if (!GetVersionEx(&osv)) return 0; - - if (osv.dwMajorVersion < 6) - { - // Perform old method (WinXP) - HWND hwnd = NULL; - HWINSTA ws; - HDESK hdesk = NULL; - - ws = OpenWindowStation("winsta0", FALSE, - WINSTA_ACCESSCLIPBOARD | - WINSTA_ACCESSGLOBALATOMS | - WINSTA_CREATEDESKTOP | - WINSTA_ENUMDESKTOPS | - WINSTA_ENUMERATE | - WINSTA_EXITWINDOWS | - WINSTA_READATTRIBUTES | - WINSTA_READSCREEN | - WINSTA_WRITEATTRIBUTES); - if (ws != NULL) - { - SetProcessWindowStation(ws); - CloseWindowStation(ws); - } - - hdesk = OpenDesktop("Winlogon", 0, FALSE, - DESKTOP_CREATEMENU | - DESKTOP_CREATEWINDOW | - DESKTOP_ENUMERATE | - DESKTOP_HOOKCONTROL | - DESKTOP_JOURNALPLAYBACK | - DESKTOP_JOURNALRECORD | - DESKTOP_READOBJECTS | - DESKTOP_SWITCHDESKTOP | - DESKTOP_WRITEOBJECTS); - if (hdesk != NULL && SetThreadDesktop(hdesk) == TRUE) - - hwnd = FindWindow("SAS window class", "SAS window"); - if (hwnd == NULL) hwnd = HWND_BROADCAST; - SendMessage(hwnd, WM_HOTKEY, 0, MAKELONG(MOD_ALT | MOD_CONTROL, VK_DELETE)); - if (hdesk != NULL) CloseDesktop(hdesk); - } - else - { - // Perform new method (Vista & Win7) - typedef VOID (WINAPI *SendSas)(BOOL asUser); - SendSas sas; - HMODULE sm = NULL; - if ((sm = LoadLibraryExA((LPCSTR)"sas.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32)) != NULL) - { - sas = (SendSas)GetProcAddress(sm, "SendSAS"); - kvm_setupSasPermissions(); - if (sas != NULL) sas(FALSE); - FreeLibrary(sm); - } - } + + // Perform new method (Vista & Win7) + kvm_setupSasPermissions(); + SendSAS(FALSE); return 0; } diff --git a/meshcore/agentcore.c b/meshcore/agentcore.c index cea201f..3ae9b84 100644 --- a/meshcore/agentcore.c +++ b/meshcore/agentcore.c @@ -3979,6 +3979,7 @@ MeshAgentHostContainer* MeshAgent_Create(MeshCommand_AuthInfo_CapabilitiesMask c #ifdef WIN32 SYSTEM_POWER_STATUS stats; + // This is only supported on Windows 8.1 / Windows Server 2012 R2 and above if ((retVal->shCore = (void*)LoadLibraryExA((LPCSTR)"Shcore.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32)) != NULL) { if ((retVal->dpiAwareness = (void*)GetProcAddress((HMODULE)retVal->shCore, (LPCSTR)"SetProcessDpiAwareness")) == NULL) @@ -3995,7 +3996,7 @@ MeshAgentHostContainer* MeshAgent_Create(MeshCommand_AuthInfo_CapabilitiesMask c retVal->capabilities = capabilities | MeshCommand_AuthInfo_CapabilitiesMask_CONSOLE | MeshCommand_AuthInfo_CapabilitiesMask_JAVASCRIPT | MeshCommand_AuthInfo_CapabilitiesMask_COMPRESSION; #ifdef WIN32 - + // This is only supported on Windows 8 and above HMODULE wsCORE = LoadLibraryExA((LPCSTR)"Ws2_32.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); GetHostNameWFunc ghnw = NULL; if (wsCORE != NULL) diff --git a/meshservice/MeshService.vcxproj b/meshservice/MeshService.vcxproj index 2923e3b..20b9f51 100644 --- a/meshservice/MeshService.vcxproj +++ b/meshservice/MeshService.vcxproj @@ -206,7 +206,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Crypt32.lib;Ncrypt.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Winhttp.lib;..\openssl\libstatic\libcrypto32MTd.lib;..\openssl\libstatic\libssl32MTd.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Crypt32.lib;Ncrypt.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Winhttp.lib;..\openssl\libstatic\libcrypto32MTd.lib;..\openssl\libstatic\libssl32MTd.lib;%(AdditionalDependencies) true Console MachineX86 @@ -251,7 +251,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Bcrypt.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Winhttp.lib;..\openssl\libstatic\libcrypto32MTd.lib;..\openssl\libstatic\libssl32MTd.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Gdiplus.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Bcrypt.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Winhttp.lib;..\openssl\libstatic\libcrypto32MTd.lib;..\openssl\libstatic\libssl32MTd.lib;%(AdditionalDependencies) true Console MachineX86 @@ -299,7 +299,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;Ncrypt.lib;..\openssl\libstatic\libcrypto64MTd.lib;..\openssl\libstatic\libssl64MTd.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;Ncrypt.lib;..\openssl\libstatic\libcrypto64MTd.lib;..\openssl\libstatic\libssl64MTd.lib;%(AdditionalDependencies) true Console MachineX64 @@ -342,7 +342,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Bcrypt.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;Ncrypt.lib;..\openssl\libstatic\libcrypto64MTd.lib;..\openssl\libstatic\libssl64MTd.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Bcrypt.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;Ncrypt.lib;..\openssl\libstatic\libcrypto64MTd.lib;..\openssl\libstatic\libssl64MTd.lib;%(AdditionalDependencies) true Console MachineX64 @@ -385,7 +385,7 @@ Size - SetupAPI.lib;Crypt32.lib;Ncrypt.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;..\openssl\libstatic\libcrypto32MT.lib;..\openssl\libstatic\libssl32MT.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Crypt32.lib;Ncrypt.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;..\openssl\libstatic\libcrypto32MT.lib;..\openssl\libstatic\libssl32MT.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) true Console @@ -427,7 +427,7 @@ Async - SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;..\openssl\libstatic\libcrypto32MT.lib;..\openssl\libstatic\libssl32MT.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;Bcrypt.lib;Crypt32.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;..\openssl\libstatic\libcrypto32MT.lib;..\openssl\libstatic\libssl32MT.lib;%(AdditionalDependencies) $(OutDir)$(TargetName)$(TargetExt) true Console @@ -471,7 +471,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;Ncrypt.lib;..\openssl\libstatic\libcrypto64MT.lib;..\openssl\libstatic\libssl64MT.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;Ncrypt.lib;..\openssl\libstatic\libcrypto64MT.lib;..\openssl\libstatic\libssl64MT.lib;%(AdditionalDependencies) true Console true @@ -516,7 +516,7 @@ Async - SetupAPI.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Bcrypt.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;Ncrypt.lib;..\openssl\libstatic\libcrypto64MT.lib;..\openssl\libstatic\libssl64MT.lib;%(AdditionalDependencies) + Sas.lib;SetupAPI.lib;DbgHelp.lib;Iphlpapi.lib;ws2_32.lib;Setupapi.lib;Psapi.lib;Bcrypt.lib;Crypt32.lib;Wintrust.lib;Version.lib;Wtsapi32.lib;Gdiplus.lib;Winhttp.lib;Ncrypt.lib;..\openssl\libstatic\libcrypto64MT.lib;..\openssl\libstatic\libssl64MT.lib;%(AdditionalDependencies) true Console true diff --git a/meshservice/ServiceMain.c b/meshservice/ServiceMain.c index 561dd26..5bd5c20 100644 --- a/meshservice/ServiceMain.c +++ b/meshservice/ServiceMain.c @@ -574,6 +574,7 @@ int wmain(int argc, char* wargv[]) gRemoteMouseRenderDefault = 1; } + // This is only supported on Windows 8 / Windows Server 2012 R2 and newer HMODULE shCORE = LoadLibraryExA((LPCSTR)"Shcore.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); DpiAwarenessFunc dpiAwareness = NULL; if (shCORE != NULL) @@ -611,6 +612,7 @@ int wmain(int argc, char* wargv[]) gRemoteMouseRenderDefault = 1; } + // This is only supported on Windows 8 / Windows Server 2012 R2 and newer HMODULE shCORE = LoadLibraryExA((LPCSTR)"Shcore.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); DpiAwarenessFunc dpiAwareness = NULL; if (shCORE != NULL) @@ -917,6 +919,7 @@ int wmain(int argc, char* wargv[]) } else { + // This is only supported on Windows 8 / Windows Server 2012 R2 and newer FreeConsole(); HMODULE shCORE = LoadLibraryExA((LPCSTR)"Shcore.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); DpiAwarenessFunc dpiAwareness = NULL; diff --git a/microscript/ILibDuktape_ScriptContainer.c b/microscript/ILibDuktape_ScriptContainer.c index 028d73f..acda0ae 100644 --- a/microscript/ILibDuktape_ScriptContainer.c +++ b/microscript/ILibDuktape_ScriptContainer.c @@ -1577,8 +1577,7 @@ duk_ret_t ILibDuktape_ScriptContainer_OS_arch(duk_context *ctx) } else { - HMODULE hm = LoadLibraryExA("Kernel32.dll", NULL, LOAD_LIBRARY_SEARCH_SYSTEM32); - void *func = (void*)GetProcAddress(hm, "IsWow64Process"); + void *func = (void*)GetProcAddress(GetModuleHandleA("kernel32"), "IsWow64Process"); BOOL isWow = FALSE; if (func != NULL) @@ -1608,7 +1607,6 @@ duk_ret_t ILibDuktape_ScriptContainer_OS_arch(duk_context *ctx) // We are 32 bit App running on 32 bit Windows duk_push_string(ctx, "ia32"); } - FreeLibrary(hm); } return(1); #else