diff --git a/testProcess.c b/testProcess.c
index b34871f7c202956cd0c59503a1f2210d0ee70c60..02379341ef58ba64452aa5e73b54173ba7a3390e 100644
--- a/testProcess.c
+++ b/testProcess.c
@@ -296,7 +296,28 @@ int main(int argc, const char* argv[])
     double timeouts[6] = {10, 10, 10, 10, 30, 10};
     int r;
     const char* cmd[4];
+#ifdef _WIN32
+    char* argv0 = 0;
+    if(n == 0 && (argv0 = strdup(argv[0])))
+      {
+      /* Try converting to forward slashes to see if it works.  */
+      char* c;
+      for(c=argv0; *c; ++c)
+        {
+        if(*c == '\\')
+          {
+          *c = '/';
+          }
+        }
+      cmd[0] = argv0;
+      }
+    else
+      {
+      cmd[0] = argv[0];
+      }
+#else
     cmd[0] = argv[0];
+#endif
     cmd[1] = "run";
     cmd[2] = argv[1];
     cmd[3] = 0;
@@ -310,6 +331,9 @@ int main(int argc, const char* argv[])
     fprintf(stderr, "Output on stderr after test %d.\n", n);
     fflush(stdout);
     fflush(stderr);
+#if _WIN32
+    if(argv0) { free(argv0); }
+#endif
     return r;
     }
   else