diff --git a/files/directory.c b/files/directory.c
index 063a83f9c2b0dc086c73ff609bea3b12ed5981a4..597bee56286ef57faa42cd3a92f281ea5fc826fa 100644
--- a/files/directory.c
+++ b/files/directory.c
@@ -129,11 +129,14 @@ int DIR_Init(void)
     /* Set the environment variables */
 
     SetEnvironmentVariableA( "PATH", path );
-    SetEnvironmentVariableA( "COMSPEC", "c:\\command.com" );
     SetEnvironmentVariableA( "TEMP", tmp_dir.short_name );
     SetEnvironmentVariableA( "windir", DIR_Windows.short_name );
     SetEnvironmentVariableA( "winsysdir", DIR_System.short_name );
 
+    /* set COMSPEC only if it doesn't exist already */
+    if (!GetEnvironmentVariableA( "COMSPEC", NULL, 0 ))
+        SetEnvironmentVariableA( "COMSPEC", "c:\\command.com" );
+
     TRACE("WindowsDir = %s (%s)\n",
           DIR_Windows.short_name, DIR_Windows.long_name );
     TRACE("SystemDir  = %s (%s)\n",