Mount NTFS partition read-only

Learn how to enable and disable read-only mounts of NTFS partitions

⚠️ Note: All these operations require Administrator privileges.

First, attach the disk and assign it a drive letter, then run mountvol. Your drive mappings (drive letter and volume id1) will be listed at the bottom, take note of them.

Remove the drive’s letter using mountvol, e.g. for drive Q:\:

mountvol Q: /p

Using /p will actually dismount the device. On older Windows versions, you only have /d, which only unassigns the drive letter, but keeps the volume mounted.

Now we can make the volume read-only2 and remount it:

  • Run diskpart
    • Enter list volume
    • Enter select volume X (where X is the correct volume number from the previous command)
    • Enter att vol set readonly
    • Enter detail vol and ensure the read-only bit is set3

Reassign when needed, using the volume ID printed by mountvol:

mountvol Q: \\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}

You can also mount the volume on an empty folder (Unix style) using the same tools4:

mkdir C:\fs\backup-disk
mountvol C:\fs\backup-disk \\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}

  1. The volume GUID is tied to that specific volume, and persists after reboots. It has to, in order for persistent drive letter assignments and filesystem mounts to work. But unfortunately it’s local to the machine. 

  2. To remove the readonly flag, select the volume in diskpart and enter att vol clear readonly

  3. Those attributes are persistent and stored on the partition, so this is a bit different from the “read-only mount” notion on Linux (ie. simply putting the hard drive back in the original enclosure won’t make the partition read-write, and Windows won’t be able to boot on it). 

  4. One might even be able to directly use the volume ID in your backup scripts, without having to mount it anywhere. For example, \\?\Volume{1be3da43-6602-11e0-b9e6-f11e1c50f5b5}\projects instead of Q:\projects