diff --git a/uiop/run-program.lisp b/uiop/run-program.lisp
index 417ee204fad72f749541878d72070c4d93023ce2..5102f7d67d4c8fa02564020b30820912229ce6b0 100644
--- a/uiop/run-program.lisp
+++ b/uiop/run-program.lisp
@@ -738,8 +738,6 @@ It returns a process-info plist with possible keys:
              (if (os-unix-p) (cons "exec" command) command)))))
 
   (defun %redirected-system-command (command in out err directory) ;; helper for %USE-SYSTEM
-    (when (and directory (not (os-unix-p)))
-      (error "Can't change directory in run-program on non-Unix systems with system() backend"))
     (flet ((redirect (spec operator)
              (let ((pathname
                      (typecase spec
@@ -760,7 +758,7 @@ It returns a process-info plist with possible keys:
         (reduce/strcat
          (append
           before (redirect in " <") (redirect out " >") (redirect err " 2>")
-          (when (and directory (os-unix-p))
+          (when (and directory (os-unix-p)) ;; NB: unless on Unix, %system uses with-current-directory
             `(" ; cd " ,(escape-shell-token (native-namestring directory))))
           after)))))