Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.cpp	(revision 71860)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestControlFileTable.cpp	(revision 71861)
@@ -1012,8 +1012,8 @@
     const QString startPath("/");
     QList<QVariant> headData;
-    headData << "Name" << "Size" << "Change Time" << "Owner";
+    headData << "Name" << "Size" << "Change Time" << "Owner" << "Permissions";
     m_pRootItem = new UIFileTableItem(headData, 0, FileObjectType_Directory);
     QList<QVariant> startDirData;
-    startDirData << startPath << 4096 << QDateTime() << "";
+    startDirData << startPath << 4096 << QDateTime() << "" << "";
     UIFileTableItem* startItem = new UIFileTableItem(startDirData, m_pRootItem, FileObjectType_Directory);
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.cpp	(revision 71860)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.cpp	(revision 71861)
@@ -340,6 +340,13 @@
     {
         QVector<KDirectoryCopyFlag> aFlags(KDirectoryCopyFlag_CopyIntoExisting);
+        QString destinatioFilePath =  UIPathOperations::addTrailingDelimiters(hostDestinationPath);
+        QString sourceWithDelimiter =  UIPathOperations::addTrailingDelimiters(guestSourcePath);
+
         /** @todo listen to CProgress object to monitor copy operation: */
-        /*CProgress comProgress = */ m_comGuestSession.DirectoryCopyFromGuest(guestSourcePath, hostDestinationPath, aFlags);
+        /*CProgress comProgress = */ m_comGuestSession.DirectoryCopyFromGuest(guestSourcePath, hostDestinationPath/*destinatioFilePath*/ , aFlags);
+        m_comGuestSession.DirectoryCopyFromGuest(guestSourcePath, destinatioFilePath , aFlags);
+        m_comGuestSession.DirectoryCopyFromGuest(sourceWithDelimiter, destinatioFilePath , aFlags);
+        m_comGuestSession.DirectoryCopyFromGuest(sourceWithDelimiter, hostDestinationPath , aFlags);
+
     }
     if (!m_comGuestSession.isOk())
@@ -375,6 +382,4 @@
         /** @todo listen to CProgress object to monitor copy operation: */
         comProgress = m_comGuestSession.DirectoryCopyToGuest(hostSourcePath, destinationFilePath, aFlags);
-
-
     }
     /** @todo currently I cannot get an errorfrom CProgress: */
@@ -392,5 +397,6 @@
         return false;
     }
-
+    /** @todo we have to until CProgress finishes to refresh: */
+    refresh();
     return true;
 }
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.h	(revision 71860)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIGuestFileTable.h	(revision 71861)
@@ -58,5 +58,4 @@
     bool copyGuestToHost(const QString &guestSourcePath, const QString& hostDestinationPath);
     bool copyHostToGuest(const QString& hostSourcePath, const QString &guestDestinationPath);
-
     mutable CGuestSession m_comGuestSession;
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp	(revision 71860)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.cpp	(revision 71861)
@@ -165,8 +165,8 @@
     {
         const QFileInfo &fileInfo = entries.at(i);
-
         QList<QVariant> data;
         data << fileInfo.fileName() << fileInfo.size()
-             << fileInfo.lastModified() << fileInfo.owner();
+             << fileInfo.lastModified() << fileInfo.owner() <<
+            permissionString(fileInfo.permissions());
         UIFileTableItem *item = new UIFileTableItem(data, parent, fileType(fileInfo));
         if (!item)
@@ -389,5 +389,6 @@
     for (int i = 0; i < drive.size(); ++i)
     {
-        m_driveLetterList.push_back(drive[i].filePath());
+        if (UIPathOperations::doesPathStartWithDriveLetter(drive[i].filePath()))
+            m_driveLetterList.push_back(drive[i].filePath());
 
     }
@@ -395,3 +396,58 @@
 }
 
+QString UIHostFileTable::permissionString(QFileDevice::Permissions permissions)
+{
+    QString strPermissions;
+    if (permissions & QFileDevice::ReadOwner)
+        strPermissions += 'r';
+    else
+        strPermissions += '-';
+
+    if (permissions & QFileDevice::WriteOwner)
+        strPermissions += 'w';
+    else
+        strPermissions += '-';
+
+    if (permissions & QFileDevice::ExeOwner)
+        strPermissions += 'x';
+    else
+        strPermissions += '-';
+
+    if (permissions & QFileDevice::ReadGroup)
+        strPermissions += 'r';
+    else
+        strPermissions += '-';
+
+    if (permissions & QFileDevice::WriteGroup)
+        strPermissions += 'w';
+    else
+        strPermissions += '-';
+
+    if (permissions & QFileDevice::ExeGroup)
+        strPermissions += 'x';
+    else
+        strPermissions += '-';
+
+    if (permissions & QFileDevice::ReadOther)
+        strPermissions += 'r';
+    else
+        strPermissions += '-';
+
+    if (permissions & QFileDevice::WriteOther)
+        strPermissions += 'w';
+    else
+        strPermissions += '-';
+
+    if (permissions & QFileDevice::ExeOther)
+        strPermissions += 'x';
+    else
+        strPermissions += '-';
+
+
+
+
+
+    return strPermissions;
+}
+
 #include "UIHostFileTable.moc"
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.h	(revision 71860)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/guestctrl/UIHostFileTable.h	(revision 71861)
@@ -48,4 +48,5 @@
 
     void prepareActions();
+    QString permissionString(QFileDevice::Permissions permissions);
 };
 
