diff --git a/src/fileio.c b/src/fileio.c
index 55337d6..cd53809 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -7297,14 +7297,10 @@
     /* A symbolic link to a directory itself is deleted, not the directory it
      * points to. */
     if (
-# if defined(WIN32)
-	 mch_isdir(name) && !mch_is_symbolic_link(name)
-# else
-#  ifdef UNIX
+# if defined(UNIX) || defined(WIN32)
 	 mch_isrealdir(name)
-#  else
+# else
 	 mch_isdir(name)
-#  endif
 # endif
 	    )
     {
diff --git a/src/os_win32.c b/src/os_win32.c
index a47ffaf..b4f5fa4 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -3130,6 +3130,17 @@
 }
 
 /*
+ * return TRUE if "name" is a directory, NOT a symlink to a directory
+ * return FALSE if "name" is not a directory
+ * return FALSE for error
+ */
+    int
+mch_isrealdir(char_u *name)
+{
+    return mch_isdir(name) && !mch_is_symbolic_link(name);
+}
+
+/*
  * Create directory "name".
  * Return 0 on success, -1 on error.
  */
@@ -3190,10 +3201,10 @@
 }
 
 /*
- * Return TRUE if file "fname" is a symbolic link.
+ * Return TRUE if "name" is a symbolic link (or a junction).
  */
     int
-mch_is_symbolic_link(char_u *fname)
+mch_is_symbolic_link(char_u *name)
 {
     HANDLE		hFind;
     int			res = FALSE;
@@ -3204,7 +3215,7 @@
     WIN32_FIND_DATAW	findDataW;
 
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
-	wn = enc_to_utf16(fname, NULL);
+	wn = enc_to_utf16(name, NULL);
     if (wn != NULL)
     {
 	hFind = FindFirstFileW(wn, &findDataW);
@@ -3213,7 +3224,7 @@
 		&& GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)
 	{
 	    /* Retry with non-wide function (for Windows 98). */
-	    hFind = FindFirstFile(fname, &findDataA);
+	    hFind = FindFirstFile(name, &findDataA);
 	    if (hFind != INVALID_HANDLE_VALUE)
 	    {
 		fileFlags = findDataA.dwFileAttributes;
@@ -3229,7 +3240,7 @@
     else
 #endif
     {
-	hFind = FindFirstFile(fname, &findDataA);
+	hFind = FindFirstFile(name, &findDataA);
 	if (hFind != INVALID_HANDLE_VALUE)
 	{
 	    fileFlags = findDataA.dwFileAttributes;
@@ -3241,7 +3252,8 @@
 	FindClose(hFind);
 
     if ((fileFlags & FILE_ATTRIBUTE_REPARSE_POINT)
-	    && reparseTag == IO_REPARSE_TAG_SYMLINK)
+	    && (reparseTag == IO_REPARSE_TAG_SYMLINK
+		|| reparseTag == IO_REPARSE_TAG_MOUNT_POINT))
 	res = TRUE;
 
     return res;
@@ -5839,7 +5851,8 @@
 
 
 /*
- * this version of remove is not scared by a readonly (backup) file
+ * This version of remove is not scared by a readonly (backup) file.
+ * This can also remove a symbolic link like Unix.
  * Return 0 for success, -1 for failure.
  */
     int
@@ -5850,6 +5863,13 @@
     int		n;
 #endif
 
+    /*
+     * On Windows, deleting a directory's symbolic link is done by
+     * RemoveDirectory(): mch_rmdir.  It seems unnatural, but it is fact.
+     */
+    if (mch_isdir(name) && mch_is_symbolic_link(name))
+	return mch_rmdir(name);
+
     win32_setattrs(name, FILE_ATTRIBUTE_NORMAL);
 
 #ifdef FEAT_MBYTE
diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro
index 7cdd156..b3acb4f 100644
--- a/src/proto/os_win32.pro
+++ b/src/proto/os_win32.pro
@@ -21,6 +21,7 @@
 void mch_hide __ARGS((char_u *name));
 int mch_ishidden __ARGS((char_u *name));
 int mch_isdir __ARGS((char_u *name));
+int mch_isrealdir __ARGS((char_u *name));
 int mch_mkdir __ARGS((char_u *name));
 int mch_rmdir __ARGS((char_u *name));
 int mch_is_hard_link __ARGS((char_u *fname));
diff --git a/src/version.c b/src/version.c
index 61393c2..5e5a319 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1128,
+/**/
     1127,
 /**/
     1126,
