diff --git a/PC/w9xpopen.c b/PC/w9xpopen.c
index 160238c3177744b81ce7c21ee5e3796851873f28..d96d0f5e5876dd0c0070803a739534df06d4cbf3 100644
--- a/PC/w9xpopen.c
+++ b/PC/w9xpopen.c
@@ -27,6 +27,7 @@ int main(int argc, char *argv[])
     BOOL bRet;
     STARTUPINFO si;
     PROCESS_INFORMATION pi;
+    DWORD exit_code=0;
 
     if (argc != 2) {
         MessageBox(NULL, usage, argv[0], MB_OK);
@@ -50,10 +51,12 @@ int main(int argc, char *argv[])
         );
 
     if (bRet) {
-        WaitForSingleObject(pi.hProcess, INFINITE);
+        if (WaitForSingleObject(pi.hProcess, INFINITE) != WAIT_FAILED) {
+	    GetExitCodeProcess(pi.hProcess, &exit_code);
+	}
         CloseHandle(pi.hProcess);
         CloseHandle(pi.hThread);
-        return 0;
+        return exit_code;
     }
 
     return 1;