From 50662ac174b73cec4cd9801adea45b6d93f93206 Mon Sep 17 00:00:00 2001 From: "Joseph C. Lehner" Date: Wed, 10 Aug 2016 15:40:27 +0200 Subject: [PATCH] Dirty %PATH% hack for Windows --- main.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/main.c b/main.c index b0740e7..9c1ce8d 100644 --- a/main.c +++ b/main.c @@ -128,6 +128,9 @@ int main(int argc, char **argv) .region = NULL, }; #ifdef NMRPFLASH_WINDOWS + char *newpath = NULL; + char *oldpath = NULL; + char *windir = NULL; WSADATA wsa; val = WSAStartup(MAKEWORD(2, 2), &wsa); @@ -135,6 +138,24 @@ int main(int argc, char **argv) win_perror2("WSAStartup", val); return 1; } + + +#ifndef _WIN64 + // This dirty hack works around the WOW64 file system redirector[1], which would prevent + // us from calling programs residing in %windir%\System32 when running on a 64bit system + // (since nmrpflash is currently shipped as 32bit only). + // + // [1] https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx + + oldpath = getenv("PATH"); + windir = getenv("WINDIR"); + if (oldpath && windir) { + newpath = malloc(strlen(oldpath) + strlen(windir) + 32); + sprintf(newpath, "%s;%s\\Sysnative", oldpath, windir); + SetEnvironmentVariable("PATH", newpath); + free(newpath); + } +#endif #endif opterr = 0; -- 2.25.1