diff --git a/files/drive.c b/files/drive.c
index 6fb0e5c96e0960bcf7807bda282be8ac99fc0761..b34b15b772d0bdf8a08009b2596b8f82fd87eaf6 100644
--- a/files/drive.c
+++ b/files/drive.c
@@ -1265,6 +1265,14 @@ int DRIVE_Chdir( int drive, LPCWSTR path )
     strcpyW(DOSDrives[drive].dos_cwd, full_name.short_name + 3);
     DOSDrives[drive].unix_cwd = heap_strdup( unix_cwd );
 
+    if (drive == DRIVE_CurDrive)
+    {
+        UNICODE_STRING dirW;
+
+        RtlInitUnicodeString( &dirW, full_name.short_name );
+        RtlSetCurrentDirectory_U( &dirW );
+    }
+
     if (pTask && (pTask->curdrive & 0x80) &&
         ((pTask->curdrive & ~0x80) == drive))
     {