簡短回答:

簡短回答:

當您使用diskpart在磁碟或分割區上設定唯讀屬性時,它是否儲存在磁碟本身上?這裡的一些答案說是,但根據我的經驗,它沒有保存在磁碟上。我在一台機器(win 8.1)上將可移動 USB 磁碟標記為唯讀,然後將其帶到另一台機器(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為 Bit #1(Bit #0 表示線上/離線磁碟狀態),因此readonly在線上磁碟上設定會將值變更為02但在離線磁碟上設定會將值變更13

優點:
該磁碟是完全只讀:所有寫入嘗試將保證失敗,包括它的分區表(例如刪除/建立磁碟區、變更唯一磁碟簽章/ID 等),且狀態將在磁碟管理中清晰可見。

缺點:
它僅對目前運行的 Windows 安裝有效,直到其枚舉裝置節點保持不變(不保證可移動磁碟機)。如果磁碟連接到另一台電腦或其裝置節點因任何原因發生更改,例如連接到另一個匯流排、連接埠或集線器(尤其是USB)或在裝置管理員中卸載並重新安裝,則磁碟將再次處於讀取寫模式。

屬性VOLUME[設定|清除]只讀

屬性是物理存儲在磁碟上,取決於其分割樣式(MBR 或 GPT)。

GPT磁碟上:
此屬性儲存在Attributes磁碟區的分區表條目的欄位中,並且僅對該卷有效(如diskpart幫助說明中所聲明的)。

MBR磁碟上:
該屬性儲存在偏移0x400h(或 512 位元組邏輯格式化磁碟上的磁區 #2)作為 GPT 條目的“短版本”,其中僅使用Type GUIDAttributes字段,總共 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)。

以同樣的方式,還可以設定SHADOWCOPYHIDDENNODEFAULTDRIVELETTER屬性(分別為位元#61#62#63)。

優點:
屬性是保留當磁碟連接到其他系統(例如 Linux)時,即使磁碟區以讀寫模式(重新)安裝,它也會保留它。

缺點:
該屬性在磁碟管理中不可見,但僅在 中可見diskpart,加上:

GPT磁碟上:

  • 屬性僅適用於選定的磁碟區(但這是預期的行為);
  • 它不會阻止只讀卷宗被刪除(但如果刪除,該屬性將自動清除,因為其關聯的 GPT 條目完全清除)。

MBR磁碟上:

  • 屬性適用於磁碟上的所有磁碟區,因為沒有其他方法可以在 MBR 上設定屬性(以及隨後的磁碟屬性結構);

  • 卷仍然可以被刪除(出於未知原因,AFAIK);

  • 如果刪除一個或多個或所有捲,則不會清除該屬性(安全清除該屬性的唯一方法是在提示字元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

相關內容