diff --git a/ProcessWin32.c b/ProcessWin32.c
index e1a53a0fae0aa146b5921c8b04ce16ce3120e357..491b289970b14c47dbf06d8b1bc572318a73be81 100644
--- a/ProcessWin32.c
+++ b/ProcessWin32.c
@@ -1593,8 +1593,9 @@ int kwsysProcessCreate(kwsysProcess* cp, int index,
   else if(cp->PipeFileSTDIN)
     {
     /* Create a handle to read a file for stdin.  */
-    HANDLE fin = CreateFile(cp->PipeFileSTDIN, GENERIC_READ,
-                            FILE_SHARE_READ, 0, OPEN_EXISTING, 0, 0);
+    HANDLE fin = CreateFile(cp->PipeFileSTDIN, GENERIC_READ|GENERIC_WRITE,
+                            FILE_SHARE_READ|FILE_SHARE_WRITE,
+                            0, OPEN_EXISTING, 0, 0);
     if(fin == INVALID_HANDLE_VALUE)
       {
       return 0;