短い答え:

短い答え:

diskpart を使用してディスクまたはパーティションに読み取り専用属性を設定すると、その属性はディスク自体に保存されますか? ここの回答の中には、はいと答えているものもありますが、私の経験では、ディスクには保存されません。リムーバブル USB ディスクを 1 台のマシン (win 8.1) で読み取り専用としてマークし、別のマシン (win10) に移動しましたが、diskpart では読み取り専用として表示されません。この属性をディスクに保存するオプションはありますか?

答え1

短い答え:

Attributes DISK [set | clear] READONLY属性を保存するWindowsレジストリ内物理ディスク上ではなく、これは現在実行中のWindowsインストールにのみ有効であり、他のOSには適用、設定、適用されません。

Attributes VOLUME [set | clear] READONLY属性を保存する物理ディスク上。 これはつまりLinuxを含む他のOSにも導入され、設定され、強制されるだろう。(ディスクを rw モードで手動で再マウントする必要があり、保存された属性には触れなかったため、Windows で手動で削除する必要がありました)。

ただし、管理者アクセスには注意してください:属性
により、DISKディスク全体のすべての書き込み(つまり、ボリュームのファイルシステムとパーティションテーブルの両方)、VOLUME属性は書き込みを禁止します。ボリュームファイルシステムのみパーティション テーブルは書き込み可能なままです (つまり、読み取り専用ボリュームは削除できます)。


長い答え:

属性DISK[設定 | クリア] 読み取り専用

属性は"Attribute"、レジストリ サブキー にあるという名前の値に格納されます。HKLM\SYSTEM\CurrentControlSet\Enum\*\Disk*\Device Parameters\Partmgrは、*ディスクの列挙され、インストールされているデバイス ノードです (ディスクの管理のデバイス プロパティで確認)。

これはビットマスク値であり、readonly属性はビット #1 (ビット #0 はオンライン/オフライン ディスク ステータス用) であるため、readonlyオンライン ディスクに設定すると値が から に変更されます02、オフライン ディスクに設定すると値が から に変更され1ます3

利点:
ディスクは全体的に読み取り専用: すべての書き込み試行は失敗パーティションテーブルを含む(ボリュームの削除/作成、一意のディスク署名/ID の変更など)、さらにそのステータスがディスク管理で明確に表示されます。

デメリット:
これは、列挙デバイス ノードが同じままになるまで、現在実行中の Windows インストールに対してのみ有効です (リムーバブル ドライブの場合は保証されません)。ディスクが別のコンピューターに接続されたり、別のバス、ポート、またはハブ (特に USB) に接続されたり、デバイス マネージャーでアンインストールされて再インストールされたりなど、何らかの理由でデバイス ノードが変更されたりすると、ディスクは再び読み取り/書き込みモードになります。

属性VOLUME[設定 | クリア] 読み取り専用

属性は物理的にディスクに保存されるパーティション スタイル (MBR または GPT) によって異なります。

ディスク上GPT:
属性はAttributesボリュームのパーティションテーブルエントリのフィールドに保存され、そのボリュームにのみ有効です(diskpartヘルプの説明に記載されているとおり)。

ディスク上MBR:
属性は以下に格納されますオフセット 0x400h(または512バイトの論理的にフォーマットされたディスク上のセクター#2)は、GPTエントリの「短縮版」として、フィールドType GUIDAttributesフィールドのみが合計0x18hバイトで使用され、有効です。全巻共通(diskpartヘルプの説明に記載されているとおり)。

以下に、16 進数出力のサンプルとその構造を示します。

   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することもできますHIDDENNODEFAULTDRIVELETTER#61#62#63

利点:
属性は保存されたディスクが Linux などの他のシステムに接続されている場合、ボリュームが rw モードで (再) マウントされてもディスクは保持されます。

デメリット:
この属性はディスク管理では表示されず、 内でのみ表示されますdiskpart。さらに、

ディスク上GPT:

  • 属性は選択したボリュームにのみ適用されます (ただし、これは想定された動作です)。
  • 読み取り専用ボリュームの削除は妨げられません (ただし、削除されると、関連付けられている GPT エントリが完全にゼロにされるため、属性は自動的にクリアされます)。

ディスク上MBR:

  • MBR (およびそれに伴うディスク上の属性構造) に属性を設定する他の方法がないため、属性はディスク上のすべてのボリュームに適用されます。

  • ボリュームは引き続き削除できます (理由は不明ですが、私の知る限り)。

  • 1 つ以上のボリュームまたはすべてのボリュームが削除された場合、属性はクリアされません (安全にクリアする唯一の方法は、プロンプトattributes VOLUME CLEAR readonlyで実行することですdiskpart)。

  • 新しいボリュームは作成できますが、フォーマットすることはできません (書き込み操作であるため)。


これは私の単純な見解ですが、ボリューム属性が MBR ディスク上のすべてのボリュームに適用される理由は次のとおりです。

  1. MBR セクターに使用可能な場所がなくなりました。「ブート インジケーター」フラグが 0x80 または 0x00 以外の値を拒否するため (そうでない場合、ブート シーケンスがおかしくなります)、オフセット 0x1BC (444) にある「オプション」バイトが「予約済み」として宣言されるためです (16 ビット フィールドの一部のビットは使用できますが)。

  2. Windows はパーティション内のすべてのファイルシステムに対して同じタイプ GUID を共有するため、そのタイプ GUID を設定すると「すべてのデータ ボリューム」を意味します (回復パーティションなどの他のタイプ GUID は、Diskpart の「ボリューム」エントリを受信しず、「パーティション」エントリのみを受信します)。

答え2

この情報はパーティションに保存できません。これはおそらくファイルシステムに関連付けられた属性です。シャットダウン時にファイルシステムが一貫した状態にない場合、ディスクへのさらなる変更を許可する前にディスクチェックを強制する属性がファイルシステムにあることは珍しくありません。

答え3

読み取り専用フラグはディスク自体に保存できません。ディスクの読み取り専用ステータスを取得するには、PowerShell コマンド Get-Disk を使用します。例: (Get-Disk -Number 2).IsReadOnly

関連情報