Index: /FCKeditor.Net/trunk/Util.cs
===================================================================
--- /FCKeditor.Net/trunk/Util.cs	(revision 1173)
+++ /FCKeditor.Net/trunk/Util.cs	(revision 1174)
@@ -56,31 +56,54 @@
 		public static DirectoryInfo CreateDirectory( string path )
 		{
-			ArrayList oDirsToCreate = new ArrayList() ;
-
 			// Create the directory info object for that dir (normalized to its absolute representation).
 			DirectoryInfo oDir = new DirectoryInfo( Path.GetFullPath( path ) ) ;
 
+			try
+			{
+				// Try to create the directory by using standard .Net features. (#415)
+				if ( !oDir.Exists )
+					oDir.Create();
+
+				return oDir;
+			}
+			catch
+			{
+				CreateDirectoryUsingDll( oDir );
+
+				return new DirectoryInfo( path );
+			}
+		}
+
+		private static void CreateDirectoryUsingDll( DirectoryInfo dir )
+		{
+			// On some occasion, the DirectoryInfo.Create() function will 
+			// throw an error due to a bug in the .Net Framework design. For
+			// example, it may happen that the user has no permissions to
+			// list entries in a lower level in the directory path, and the
+			// Create() call will simply fail.
+			// To workaround it, we use mkdir directly.
+
+			ArrayList oDirsToCreate = new ArrayList();
+
 			// Check the entire path structure to find directories that must be created.
-			while ( oDir != null && !oDir.Exists )
+			while ( dir != null && !dir.Exists )
 			{
-				oDirsToCreate.Add( oDir.FullName ) ;
-				oDir = oDir.Parent ;
+				oDirsToCreate.Add( dir.FullName );
+				dir = dir.Parent;
 			}
 
-			// "oDir == null" means that the check arrives in the root and it doesn't exist too.
-			if ( oDir == null )
-				throw( new System.IO.DirectoryNotFoundException( "Directory \"" + oDirsToCreate[ oDirsToCreate.Count-1 ] + "\" not found." ) ) ;
+			// "dir == null" means that the check arrives in the root and it doesn't exist too.
+			if ( dir == null )
+				throw ( new System.IO.DirectoryNotFoundException( "Directory \"" + oDirsToCreate[ oDirsToCreate.Count - 1 ] + "\" not found." ) );
 
 			// Create all directories that must be created (from bottom to top).
-			for( int i = oDirsToCreate.Count - 1 ; i >= 0 ; i-- )
+			for ( int i = oDirsToCreate.Count - 1 ; i >= 0 ; i-- )
 			{
-				string sPath = (string)oDirsToCreate[i] ;
-				int iReturn = _mkdir( sPath ) ;
+				string sPath = (string)oDirsToCreate[ i ];
+				int iReturn = _mkdir( sPath );
 
 				if ( iReturn != 0 )
-					throw new ApplicationException("Error calling [msvcrt.dll]:_wmkdir(" + sPath + "), error code: " + iReturn );
+					throw new ApplicationException( "Error calling [msvcrt.dll]:_wmkdir(" + sPath + "), error code: " + iReturn );
 			}
-
-			return new DirectoryInfo( path ) ;
 		}
 	}
Index: /FCKeditor.Net/trunk/_whatsnew.html
===================================================================
--- /FCKeditor.Net/trunk/_whatsnew.html	(revision 1173)
+++ /FCKeditor.Net/trunk/_whatsnew.html	(revision 1174)
@@ -65,4 +65,6 @@
 			and uploader will now correctly handle the Tilde ("~") in the UserFilesPath setting.
 		</li>
+		<li>[<a target="_blank" href="http://dev.fckeditor.net/ticket/415">#415</a>] The file
+			browser connector will not work properly on "Medium" trust web sites.</li>
 	</ul>
 	<h3>
