diff --git a/uiop/run-program.lisp b/uiop/run-program.lisp
index 7a19e53f0dc2f2917a6b5258bf6fcd1449a36050..417ee204fad72f749541878d72070c4d93023ce2 100644
--- a/uiop/run-program.lisp
+++ b/uiop/run-program.lisp
@@ -738,6 +738,8 @@ 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