Короткий ответ:

Короткий ответ:

Когда вы устанавливаете атрибут «только для чтения» на диске или разделе с помощью diskpart, он сохраняется на самом диске? Некоторые ответы здесь говорят «да», но по моему опыту он не сохраняется на диске. Я пометил съемный USB-диск как «только для чтения» на одной машине (win 8.1), перенес его на другую машину (win10), и diskpart не отображает его как «только для чтения». Есть ли возможность сохранить этот атрибут на диске?

решение1

Короткий ответ:

Attributes DISK [set | clear] READONLYсохраняет атрибутв реестре Windows, а не на физическом диске. Это означает,он действителен только для текущей установленной версии Windows и не будет перенесен, установлен и применен в других ОС..

Attributes VOLUME [set | clear] READONLYсохраняет атрибутна физическом диске. Это означаетон БУДЕТ перенесен, установлен и применен также и на других ОС, включая Linux(Мне пришлось вручную перемонтировать диск в режиме чтения/записи, плюс это не затронуло атрибут сохранения, поэтому мне пришлось вручную удалить его в Windows).

БУДЬТЕ ОСТОРОЖНЫ с административным доступом.:
в то время как DISKатрибут предотвращаетВСЕ записи на весь диск(т.е. как файловая система тома(ов), так и таблица разделов), VOLUMEатрибут предотвращает записьТОЛЬКО к файловой системе тома(ов), оставляя таблицу разделов ВСЕ ЕЩЕ доступной для записи (т.е. вы по-прежнему можете удалить том, доступный только для чтения).


Длинный ответ:

Атрибуты DISK[установить | очистить] ТОЛЬКО ДЛЯ ЧТЕНИЯ

Атрибут хранится в значении с именем "Attribute", расположенном в подразделе реестра HKLM\SYSTEM\CurrentControlSet\Enum\*\Disk*\Device Parameters\Partmgr, где *находится пронумерованный и установленный узел устройства диска (см. Свойства устройства в Управлении дисками).

Это значение битовой маски, а readonlyатрибут — бит № 1 (бит № 0 соответствует статусу диска «онлайн/офлайн»), поэтому установка readonlyдля подключенного диска изменит значение с 0на 2, а установка для отключенного диска изменит значение с 1на 3.

Преимущества:
Диск естьполностьютолько для чтения: все попытки записи будут гарантированноНЕУДАЧА,включая таблицу разделов(например, удаление/создание томов, изменение уникальной подписи/идентификатора диска и т. д.), а также статус будет четко виден в Управлении дисками.

Недостатки:
Он действителен только для текущей работающей установки Windows, пока ее узел перечисления устройств не останется прежним (нет гарантии для съемных дисков). Диск снова будет в режиме чтения-записи, если он подключен к другому компьютеру или его узел устройства изменится по какой-либо причине, например, он подключен к другой шине, порту или концентратору (особенно USB) или он будет удален и переустановлен в диспетчере устройств.

Атрибуты VOLUME[установить | очистить] ТОЛЬКО ДЛЯ ЧТЕНИЯ

Атрибут - этофизически хранится на диске, в зависимости от стиля раздела (MBR или GPT).

На GPTдисках:
Атрибут хранится в Attributesполе записи таблицы разделов тома ион действителен ТОЛЬКО для этого тома(как указано в diskpartописании справки).

На MBRдисках:
Атрибут хранится по адресусмещение 0x400h(или сектор № 2 на логически отформатированном диске размером 512 байт) как «короткая версия» записи GPT, где используются только поля Type GUIDи Attributesдля общего объема 0x18h байт, и это допустимоДЛЯ ВСЕХ ОБЪЕМОВ(как указано в diskpartописании справки).

Ниже приведен пример шестнадцатеричного вывода и его структура:

   Hex Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
   0000000400   A2 A0 D0 EB E5 B9 33 44 87 C0 68 B6 B7 26 99 C7
   0000000410   00 00 00 00 00 00 00 10
  • 0x400: 128-битный GUID Type GUIDсо значением EBD0A0A2-B9E5-4433-87C0-68B6B72699C7(т.е. MicrosoftРаздел базовых данныхВведите GUID);

  • 0x410: 64-битное целое число Attributesсо значением 0x1000000000000000(т.е. #60установленным битом).

Таким же образом можно задать атрибуты SHADOWCOPY, HIDDENи NODEFAULTDRIVELETTER(биты #61, #62и #63, соответственно).

Преимущества:
Атрибут - этосохранилиськогда диск подключен к другим системам, например, Linux, что сохраняет его даже если том (пере)монтируется в режиме чтения/записи.

Недостатки:
Атрибут не виден в Управлении дисками, а только в diskpart, плюс:

На GPTдисках:

  • атрибуты применяются ТОЛЬКО к выбранному тому (но это ожидаемое поведение);
  • это не препятствует удалению тома, доступного только для чтения (но если он удаляется, атрибут автоматически очищается, поскольку связанная с ним запись GPT полностью обнуляется).

На MBRдисках:

  • атрибуты применяются ко ВСЕМ томам на диске, поскольку нет другого способа задать атрибуты в MBR (и, соответственно, структуру атрибутов на диске);

  • тома по-прежнему можно удалять (насколько мне известно, по неизвестной причине);

  • атрибут НЕ очищается, если удаляются один или несколько томов или все тома (единственный способ безопасно очистить его — выполнить команду attributes VOLUME CLEAR readonlyв diskpartкомандной строке);

  • Новые тома по-прежнему можно создавать, но их нельзя форматировать (поскольку это операция записи).


Это моя упрощенная точка зрения, но причина, по которой атрибуты тома применяются ко ВСЕМ ТОМАМ на MBR-дисках, может быть следующей:

  1. Больше нет доступных мест в секторе MBR, так как флаг «индикатор загрузки» отклоняет любые значения, отличные от 0x80 или 0x00 (иначе последовательность загрузки сойдёт с ума), а «необязательные» байты, расположенные по смещению 0x1BC (444), объявлены «зарезервированными» (несмотря на то, что некоторые биты этого 16-битного поля могут быть использованы);

  2. Windows использует один и тот же Type GUID для всех файловых систем в разделе, поэтому установка этого Type GUID означает «для всех томов данных» (другие Type GUID, такие как раздел восстановления, не получат запись «тома» Diskpart, только запись «раздела»).

решение2

Эту информацию нельзя хранить в разделе — вероятно, это атрибут, связанный с файловой системой. Нередко файловые системы имеют такой атрибут, чтобы принудительно выполнить проверку диска перед внесением дальнейших изменений на диск, если файловая система не находится в согласованном состоянии при завершении работы.

решение3

Флаг «Только для чтения» не может храниться на самом диске. Чтобы получить статус диска «только для чтения», можно использовать команду PowerShell Get-Disk. Например: (Get-Disk -Number 2).IsReadOnly

Связанный контент