Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h	(revision 41346)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManage.h	(revision 41347)
@@ -229,6 +229,7 @@
                    ComPtr<IMedium> &pMedium);
 HRESULT findOrOpenMedium(HandlerArg *a, const char *pszFilenameOrUuid,
-                         DeviceType_T enmDevType, ComPtr<IMedium> &pMedium,
-                         bool fForceNewUuidOnOpen, bool *pfWasUnknown);
+                         DeviceType_T enmDevType, AccessMode_T enmAccessMode,
+                         ComPtr<IMedium> &pMedium, bool fForceNewUuidOnOpen,
+                         bool *pfWasUnknown);
 int handleCreateHardDisk(HandlerArg *a);
 int handleModifyHardDisk(HandlerArg *a);
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp	(revision 41346)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageDisk.cpp	(revision 41347)
@@ -186,6 +186,7 @@
 
 HRESULT findOrOpenMedium(HandlerArg *a, const char *pszFilenameOrUuid,
-                         DeviceType_T enmDevType, ComPtr<IMedium> &pMedium,
-                         bool fForceNewUuidOnOpen, bool *pfWasUnknown)
+                         DeviceType_T enmDevType, AccessMode_T enmAccessMode,
+                         ComPtr<IMedium> &pMedium, bool fForceNewUuidOnOpen,
+                         bool *pfWasUnknown)
 {
     HRESULT rc;
@@ -208,5 +209,5 @@
     rc = a->virtualBox->OpenMedium(Bstr(pszFilenameOrUuid).raw(), 
                                    enmDevType,
-		                   AccessMode_ReadWrite,
+                                   enmAccessMode,
                                    /*fForceNewUidOnOpen */ false,
                                    pMedium.asOutParam());
@@ -215,5 +216,5 @@
     {
         CHECK_ERROR(a->virtualBox, OpenMedium(Bstr(pszFilenameOrUuid).raw(),
-                                              enmDevType, AccessMode_ReadWrite,
+                                              enmDevType, enmAccessMode,
                                               fForceNewUuidOnOpen,
                                               pMedium.asOutParam()));
@@ -372,5 +373,5 @@
                 format = pszExt;
         }
-        rc = findOrOpenMedium(a, diffparent, DeviceType_HardDisk,
+        rc = findOrOpenMedium(a, diffparent, DeviceType_HardDisk, AccessMode_ReadWrite,
                               parentHardDisk, false /* fForceNewUuidOnOpen */,
                               &fUnknownParent);
@@ -537,5 +538,5 @@
         rc = findMedium(a, FilenameOrUuid, DeviceType_HardDisk, false /* fSilent */, hardDisk);
     else
-        rc = findOrOpenMedium(a, FilenameOrUuid, DeviceType_HardDisk,
+        rc = findOrOpenMedium(a, FilenameOrUuid, DeviceType_HardDisk, AccessMode_ReadWrite,
                               hardDisk, false /* fForceNewUuidOnOpen */, &unknown);
     if (FAILED(rc))
@@ -564,5 +565,5 @@
     {
         ComPtr<IProgress> progress;
-        CHECK_ERROR(hardDisk, Compact(progress.asOutParam()));
+        CHECK_ERROR(hardDisk, Compact(FALSE, progress.asOutParam()));
         if (SUCCEEDED(rc))
             rc = showProgress(progress);
@@ -694,6 +695,6 @@
     bool fDstUnknown = false;
 
-    rc = findOrOpenMedium(a, pszSrc, DeviceType_HardDisk, srcDisk,
-                          false /* fForceNewUuidOnOpen */, &fSrcUnknown);
+    rc = findOrOpenMedium(a, pszSrc, DeviceType_HardDisk, AccessMode_ReadOnly,
+                          srcDisk, false /* fForceNewUuidOnOpen */, &fSrcUnknown);
     if (FAILED(rc))
         return 1;
@@ -704,6 +705,6 @@
         if (fExisting)
         {
-            rc = findOrOpenMedium(a, pszDst, DeviceType_HardDisk, dstDisk,
-                                  false /* fForceNewUuidOnOpen */, &fDstUnknown);
+            rc = findOrOpenMedium(a, pszDst, DeviceType_HardDisk, AccessMode_ReadWrite,
+                                  dstDisk, false /* fForceNewUuidOnOpen */, &fDstUnknown);
             if (FAILED(rc))
                 break;
@@ -986,6 +987,6 @@
     bool unknown = false;
 
-    rc = findOrOpenMedium(a, FilenameOrUuid, DeviceType_HardDisk, hardDisk,
-                          false /* fForceNewUuidOnOpen */, &unknown);
+    rc = findOrOpenMedium(a, FilenameOrUuid, DeviceType_HardDisk, AccessMode_ReadOnly,
+                          hardDisk, false /* fForceNewUuidOnOpen */, &unknown);
     if (FAILED(rc))
         return 1;
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 41346)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageModifyVM.cpp	(revision 41347)
@@ -723,6 +723,6 @@
                     ComPtr<IMedium> hardDisk;
                     rc = findOrOpenMedium(a, ValueUnion.psz, DeviceType_HardDisk,
-                                          hardDisk, false /* fForceNewUuidOnOpen */,
-                                          NULL);
+                                          AccessMode_ReadWrite, hardDisk,
+                                          false /* fForceNewUuidOnOpen */, NULL);
                     if (FAILED(rc))
                         break;
@@ -819,6 +819,6 @@
                     ComPtr<IMedium> hardDisk;
                     rc = findOrOpenMedium(a, ValueUnion.psz, DeviceType_HardDisk,
-                                          hardDisk, false /* fForceNewUuidOnOpen */,
-                                          NULL);
+                                          AccessMode_ReadWrite, hardDisk,
+                                          false /* fForceNewUuidOnOpen */, NULL);
                     if (FAILED(rc))
                         break;
@@ -947,6 +947,6 @@
                 {
                     rc = findOrOpenMedium(a, ValueUnion.psz, DeviceType_DVD,
-                                          dvdMedium, false /* fForceNewUuidOnOpen */,
-                                          NULL);
+                                          AccessMode_ReadOnly, dvdMedium,
+                                          false /* fForceNewUuidOnOpen */, NULL);
                     if (FAILED(rc))
                         break;
@@ -1011,6 +1011,6 @@
                     {
                         rc = findOrOpenMedium(a, ValueUnion.psz, DeviceType_Floppy,
-                                              floppyMedium, false /* fForceNewUuidOnOpen */,
-                                              NULL);
+                                              AccessMode_ReadWrite, floppyMedium,
+                                              false /* fForceNewUuidOnOpen */, NULL);
                         if (FAILED(rc))
                             break;
Index: /trunk/src/VBox/Frontends/VBoxManage/VBoxManageStorageController.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VBoxManage/VBoxManageStorageController.cpp	(revision 41346)
+++ /trunk/src/VBox/Frontends/VBoxManage/VBoxManageStorageController.cpp	(revision 41347)
@@ -636,5 +636,6 @@
                     Bstr bstrMedium(pszMedium);
                     rc = findOrOpenMedium(a, pszMedium, devTypeRequested,
-                                          pMedium2Mount, fSetNewUuid, NULL);
+                                          AccessMode_ReadWrite, pMedium2Mount,
+                                          fSetNewUuid, NULL);
                     if (FAILED(rc) || !pMedium2Mount)
                         throw Utf8StrFmt("Invalid UUID or filename \"%s\"", pszMedium);
