หากคุณต้องการคำอธิบายที่ดีขึ้นเกี่ยวกับขั้นตอนที่ระบุด้านล่างโปรดโพสต์ความคิดเห็น 
คำตอบที่ระบุด้านล่างจะถือว่ามีขนาดเซกเตอร์ 512 ไบต์ สำหรับขนาดเซกเตอร์ขนาดใหญ่คุณจะต้องทำการปรับเปลี่ยนที่เหมาะสม ด้านล่างนี้เป็นขั้นตอนพื้นฐานที่จำเป็นในการค้นหาและกู้คืนพาร์ติชัน Windows Boot Camp ที่สูญหาย ไม่มีขั้นตอนใดที่ต้องใช้ซอฟต์แวร์ของบุคคลที่สาม
หากเป็นไปได้ให้ปิดการใช้งานการป้องกันความสมบูรณ์ของระบบ (SIP) /dev/disk0คุณจำเป็นต้องทำเช่นนี้ได้รับการเข้าถึง คุณต้องสามารถอ่านข้อมูลที่เก็บไว้ในดิสก์ที่คุณบูทได้
คำสั่งเพื่อปิดการใช้งาน SIP ได้รับด้านล่าง คุณจะต้องบู๊ตเป็นหนึ่งในหลาย ๆโหมดการกู้คืน macOSหรือดิสก์เริ่มต้นระบบ Mac ภายนอกก่อนดำเนินการคำสั่งจากแอปพลิเคชัน Terminal
csrutil  disable
ที่จริงแล้ว SIP ไม่จำเป็นต้องปิดการใช้งานโดยสิ้นเชิง csrutilคำสั่งเวอร์ชันที่ไม่มีเอกสารต่อไปนี้สามารถใช้เพื่อปิดใช้งานการป้องกันระบบไฟล์ของ SIP เป็นอย่างน้อย
csrutil  enable  --without  fs
  หมายเหตุ: ฉันได้ทดสอบคำสั่งด้านบนในขณะที่เรียกใช้ High Sierra (macOS 10.13.1) เท่านั้น
หลังจากปิดใช้งาน SIP บางส่วนหรือทั้งหมดแล้วให้บูตกลับเป็น macOS (OS X)
  หมายเหตุ: rEFIndยังสามารถใช้เพื่อเลือกปิด / เปิดใช้งาน SIP
 
เปิดแอปพลิเคชัน Terminal และป้อนคำสั่งที่ระบุด้านล่าง
sudo  chmod  a+w  /dev/disk0
นี้จะช่วยให้คุณอ่าน ( แต่ไม่เขียน) จากโดยไม่ต้องก่อนคำสั่งของคุณด้วย/dev/disk0sudo
  หมายเหตุ: การเข้าถึงแบบอ่านนี้จะถูกลบโดยอัตโนมัติเมื่อคุณรีสตาร์ทคอมพิวเตอร์
 
ถัดไปคุณต้องพิจารณาว่าส่วนใดที่อาจมีพาร์ติชั่น NTFS หายไป สามารถทำได้โดยการป้อนคำสั่งที่ระบุด้านล่าง
gpt  -r  show  /dev/disk0
ด้านล่างเป็นผลลัพธ์จากคอมพิวเตอร์ของฉัน เนื่องจากคอมพิวเตอร์ของฉันติดตั้งFedora (linux) และrEFIndผลลัพธ์ด้านล่างจะแตกต่างจากที่ใช้โดยทั่วไป อย่างไรก็ตามไดรฟ์ข้อมูล Windows NTFS ยังคงอยู่ในพาร์ติชัน 4 ตามที่คาดไว้สำหรับ 2011 iMac
Marlin:~ davidanderson$ gpt -r show /dev/disk0
gpt show: /dev/disk0: Suspicious MBR at sector 0
      start       size  index  contents
          0          1         MBR
          1          1         Pri GPT header
          2         32         Pri GPT table
         34          6         
         40     409600      1  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
     409640  585937496      2  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  586347136    1269536      3  GPT part - 426F6F74-0000-11AA-AA11-00306543ECAC
  587616672  193097312      4  GPT part - EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
  780713984     409600      5  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  781123584    1024000      6  GPT part - 0FC63DAF-8483-4772-8E79-3D69D8477DE4
  782147584  192528384      7  GPT part - E6D6D379-F507-44C2-A23C-238F2A3DF928
  974675968          8         
  974675976    1835008      8  GPT part - 48465300-0000-11AA-AA11-00306543ECAC
  976510984     262144      9  GPT part - C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  976773128          7         
  976773135         32         Sec GPT table
  976773167          1         Sec GPT header
gdiskในกรณีของคุณคุณสามารถใช้แทนการส่งออกของคุณจาก สิ่งที่คุณต้องหาคือพื้นที่ว่างจำนวนมาก ๆ การส่งออกของคุณจะแสดงพื้นที่ว่างเริ่มต้นที่ภาคและสิ้นสุดภาค1394257296 1465149134นี่คือ70891839ส่วนที่มีพื้นที่ว่างประมาณ 36 GB
 
ตอนนี้คุณพร้อมที่จะเริ่มค้นหาพาร์ติชัน NTFS ที่หายไป ในการถ่ายโอนข้อมูลเซกเตอร์แรกของพาร์ติชัน Boot Camp ของ Windows NTFS ของฉันฉันได้ป้อนคำสั่งที่ระบุด้านล่าง
hexdump  -C  -v  -n  512  -s  587616672b  /dev/disk0
  หมายเหตุ: ในคำสั่งดังกล่าวข้างต้น587616672bจะตามด้วยตัวอักษร587616672 bมันเป็นไม่ได้ 5876166726
ด้านล่างเป็นผลลัพธ์จากคำสั่งด้านบน
Marlin:~ davidanderson$ hexdump -C -v -n 512 -s 587616672b /dev/disk0
460ca34000  eb 52 90 4e 54 46 53 20  20 20 20 00 02 08 00 00  |.R.NTFS    .....|
460ca34010  00 00 00 00 00 f8 00 00  3f 00 33 00 a0 51 06 23  |........?.3..Q.#|
460ca34020  00 00 00 00 80 00 80 00  5f 6e 82 0b 00 00 00 00  |........_n......|
460ca34030  00 00 0c 00 00 00 00 00  02 00 00 00 00 00 00 00  |................|
460ca34040  f6 00 00 00 01 00 00 00  f8 1a 1d 9e f0 ed 53 24  |..............S$|
460ca34050  00 00 00 00 fa 33 c0 8e  d0 bc 00 7c fb 68 c0 07  |.....3.....|.h..|
460ca34060  1f 1e 68 66 00 cb 88 16  0e 00 66 81 3e 03 00 4e  |..hf......f.>..N|
460ca34070  54 46 53 75 15 b4 41 bb  aa 55 cd 13 72 0c 81 fb  |TFSu..A..U..r...|
460ca34080  55 aa 75 06 f7 c1 01 00  75 03 e9 dd 00 1e 83 ec  |U.u.....u.......|
460ca34090  18 68 1a 00 b4 48 8a 16  0e 00 8b f4 16 1f cd 13  |.h...H..........|
460ca340a0  9f 83 c4 18 9e 58 1f 72  e1 3b 06 0b 00 75 db a3  |.....X.r.;...u..|
460ca340b0  0f 00 c1 2e 0f 00 04 1e  5a 33 db b9 00 20 2b c8  |........Z3... +.|
460ca340c0  66 ff 06 11 00 03 16 0f  00 8e c2 ff 06 16 00 e8  |f...............|
460ca340d0  4b 00 2b c8 77 ef b8 00  bb cd 1a 66 23 c0 75 2d  |K.+.w......f#.u-|
460ca340e0  66 81 fb 54 43 50 41 75  24 81 f9 02 01 72 1e 16  |f..TCPAu$....r..|
460ca340f0  68 07 bb 16 68 52 11 16  68 09 00 66 53 66 53 66  |h...hR..h..fSfSf|
460ca34100  55 16 16 16 68 b8 01 66  61 0e 07 cd 1a 33 c0 bf  |U...h..fa....3..|
460ca34110  0a 13 b9 f6 0c fc f3 aa  e9 fe 01 90 90 66 60 1e  |.............f`.|
460ca34120  06 66 a1 11 00 66 03 06  1c 00 1e 66 68 00 00 00  |.f...f.....fh...|
460ca34130  00 66 50 06 53 68 01 00  68 10 00 b4 42 8a 16 0e  |.fP.Sh..h...B...|
460ca34140  00 16 1f 8b f4 cd 13 66  59 5b 5a 66 59 66 59 1f  |.......fY[ZfYfY.|
460ca34150  0f 82 16 00 66 ff 06 11  00 03 16 0f 00 8e c2 ff  |....f...........|
460ca34160  0e 16 00 75 bc 07 1f 66  61 c3 a1 f6 01 e8 09 00  |...u...fa.......|
460ca34170  a1 fa 01 e8 03 00 f4 eb  fd 8b f0 ac 3c 00 74 09  |............<.t.|
460ca34180  b4 0e bb 07 00 cd 10 eb  f2 c3 0d 0a 41 20 64 69  |............A di|
460ca34190  73 6b 20 72 65 61 64 20  65 72 72 6f 72 20 6f 63  |sk read error oc|
460ca341a0  63 75 72 72 65 64 00 0d  0a 42 4f 4f 54 4d 47 52  |curred...BOOTMGR|
460ca341b0  20 69 73 20 63 6f 6d 70  72 65 73 73 65 64 00 0d  | is compressed..|
460ca341c0  0a 50 72 65 73 73 20 43  74 72 6c 2b 41 6c 74 2b  |.Press Ctrl+Alt+|
460ca341d0  44 65 6c 20 74 6f 20 72  65 73 74 61 72 74 0d 0a  |Del to restart..|
460ca341e0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
460ca341f0  00 00 00 00 00 00 8a 01  a7 01 bf 01 00 00 55 aa  |..............U.|
460ca34200
รายละเอียดของการส่งออกดังกล่าวข้างต้นสามารถพบได้ที่ทั้งไมโครซอฟท์: NTFS โครงสร้างทางกายภาพหรือวิกิพีเดีย: NTFS Internals
ฝังอยู่ในภาคนี้มีหลายสาย ในการค้นหาพาร์ติชัน NTFS ของคุณคุณจะต้องค้นหาหนึ่งในสตริงเหล่านี้ BOOTMGR is compressedฉันจะสุ่มเลือกสตริง เนื่องจากฉันรู้ว่าพาร์ทิชัน NTFS ของฉันอยู่ที่ไหนฉันสามารถป้อนคำสั่งด้านล่างเพื่อค้นหาสตริงนี้
dd  if=/dev/disk0  bs=512  skip=587616672  count=50000000  |  fgrep  -o  -a  -b  "BOOTMGR is compressed"
ที่ใหญ่ที่สุดคุ้มค่าคอมพิวเตอร์ของฉันจะช่วยให้เป็นเรื่องเกี่ยวกับcount 50000000ค่านี้อาจแตกต่างกันสำหรับคอมพิวเตอร์ของคุณ ดังนั้นถ้าฉันต้องการค้นหาพาร์ติชัน NTFS ทั้งหมดของฉันฉันจะต้องป้อนคำสั่งนี้ 4 ครั้ง เวลาอยู่กับแต่ละมูลค่าเพิ่มขึ้นskip 50000000แน่นอนว่าเราสามารถเขียนเชลล์สคริปต์ด้วยลูปเพื่อทำซ้ำคำสั่งเหล่านี้ แต่ฉันรู้สึกว่าการเพิ่มสคริปต์ดังกล่าวที่นี่จะเกินขอบเขตคำตอบนี้
ผลลัพธ์จากการป้อนคำสั่งข้างต้นบนคอมพิวเตอร์ของฉันได้รับด้านล่าง
Marlin:~ davidanderson$ dd if=/dev/disk0 bs=512 skip=587616672 count=50000000 | fgrep -o -a -b "BOOTMGR is compressed"
425:BOOTMGR is compressed
338433776:BOOTMGR is compressed
790493856:BOOTMGR is compressed
1095625536:BOOTMGR is compressed
1405559232:BOOTMGR is compressed
3533975792:BOOTMGR is compressed
3534741744:BOOTMGR is compressed
4601366880:BOOTMGR is compressed
6145609496:BOOTMGR is compressed
6146292528:BOOTMGR is compressed
6146951928:BOOTMGR is compressed
6951738816:BOOTMGR is compressed
8739643840:BOOTMGR is compressed
8846594496:BOOTMGR is compressed
9138315712:BOOTMGR is compressed
9241170368:BOOTMGR is compressed
21212440040:BOOTMGR is compressed
50000000+0 records in
50000000+0 records out
25600000000 bytes transferred in 874.399247 secs (29277244 bytes/sec)
ตามที่คาดไว้สตริงถูกค้นพบในภาคแรกที่ค้นหา ส่วนที่เหลือของการแข่งขันสามารถถูกละเว้น
หากกรณีของคุณคุณจะป้อนคำสั่งที่ระบุด้านล่างซึ่งฉันคิดว่าcountค่าของ50000000จะถูกต้อง
dd  if=/dev/disk0  bs=512  skip=1394257296  count=50000000  |  fgrep  -o  -a  -b  "BOOTMGR is compressed"
  หมายเหตุ: คุณสามารถป้อน "control T" ในขณะที่ddคำสั่งดำเนินการอยู่ สิ่งนี้จะทำให้ddคำสั่งแสดงความคืบหน้า
หากคำสั่งนี้ไม่ส่งคืนการจับคู่คุณสามารถสมมติว่าพาร์ติชัน NTFS ของคุณไม่สมบูรณ์ 
 
ตรวจสอบว่าการแข่งขันนั้นอยู่ในเซกเมนต์บูตพาร์ติชันที่ถูกต้อง ค่าการจับคู่ที่กำหนดใด ๆ สามารถแปลงเป็นค่าเริ่มต้นของเซกเตอร์พาร์ติชันสำหรับเริ่มต้นด้วยการหารค่าการจับคู่ด้วยbsค่าก่อน ส่วนที่เหลือสามารถทิ้ง ถัดไปเพิ่มskipมูลค่าให้กับผลลัพธ์ 425นี้คือการคำนวณด้านล่างสำหรับค่าการแข่งขันครั้งแรกของฉัน
425 / 512 + 587616672 = 587616672
จากนั้นป้อนคำสั่งเพื่อถ่ายโอนข้อมูลภาคที่คำนวณ สำหรับคอมพิวเตอร์ของฉันคำสั่งและผลลัพธ์จะแสดงในขั้นตอนที่ 4 สำหรับ-sตัวเลือกคุณจะต้องแทนที่ค่าเซกเตอร์เริ่มต้นของคุณ อย่าลืมที่จะผนวกตัวอักษรbกับค่าของคุณ
น้อยที่สุดภาคควรเริ่มต้นด้วยลำดับฐานสิบหกและจบด้วยลำดับฐานสิบหกeb 52 90 4e 54 46 53 20  20 20 20 00 55 aaค่าอื่น ๆ เพื่อตรวจสอบสามารถพบได้ในการอ้างอิงที่ได้รับในขั้นตอนที่ 4
 
กำหนดค่าเริ่มต้นและขนาดพาร์ติชันของ NTFS ค่าเริ่มต้นของพาร์ติชันจะเหมือนกับค่าเริ่มต้นของ Partition Boot Sector ในการกำหนดขนาดคุณจะต้องรับค่าเลขฐานสิบหก 8 ค่าที่เก็บอยู่ในเซกเตอร์ Boot Partition โดยเริ่มต้นที่ค่าที่ 41 สำหรับ Sector Boot Partition ของฉันที่แสดงในขั้นตอนที่ 4 ค่าเหล่านี้จะแสดงอยู่ด้านล่าง
5f 6e 82 0b 00 00 00 00
ถัดไปคุณจะต้องแปลงจาก endian น้อยเป็นใหญ่ endian โดยการกลับคำสั่งของไบต์ดังที่แสดงด้านล่าง 
00 00 00 00 0b 82 6e 5f
แปลงค่าเหล่านี้เป็นค่าเลขฐานสิบหกเดียวโดยการลบช่องว่างและเลขศูนย์หน้าก่อนหน้าจากนั้นเพิ่ม0xจุดเริ่มต้นของผลลัพธ์ ทำเช่นนั้นสำหรับค่าข้างต้นผลลัพธ์ในค่าเดียวที่แสดงด้านล่าง
0xb826e5f
กำหนดค่าเทียบเท่าทศนิยมโดยใช้คำสั่งที่แสดงด้านล่าง 
Marlin:~ davidanderson$ echo $((0xb826e5f))
193097311
สุดท้ายรอบขึ้นค่านี้เป็นเลขที่ใกล้ที่สุดหารด้วย 8. ในกรณีนี้193097311ไม่หารด้วย 8. 193097312ดังนั้นค่านี้จะต้องมีการปัดเศษขึ้นค่าเป็น
  สำหรับผู้ที่ไม่ทราบค่าจะหารด้วย 8 ถ้า 3 หลักสุดท้ายหารด้วย 8 ในกรณีนี้311/8=38.875และ312/8=39ดังนั้นจึง193097311ไม่หาร 8 ได้ แต่193097312เป็น
 
เพิ่มพาร์ติชันที่พบในตารางพาร์ติชัน GUID (GPT) หากพาร์ติชันนี้ไม่มีอยู่ในคอมพิวเตอร์ของฉันฉันสามารถเพิ่มได้โดยป้อนคำสั่งที่แสดงด้านล่าง ในกรณีของคุณคุณจะใช้ตัวเลือกดัชนีในสถานที่ของ-i  6 -i  4นอกจากนี้ค่าเริ่มต้นเซกเตอร์-bและขนาด-sตัวเลือกของคุณจะแตกต่างกัน
sudo  gpt  -f  add  -i  4  -b  587616672  -s  193097312  -t  windows  /dev/disk0
คอมพิวเตอร์ของฉันใช้งาน MacOS 10.13.1 คำสั่งนี้อาจไม่ทำงานหากใช้ OS X หรือ macOS รุ่นก่อนหน้า ถ้าเป็นเช่นนั้นคุณจะต้องเริ่มต้นใหม่จากการกู้คืน macOS ผ่านอินเทอร์เน็ตหรือดิสก์เริ่มต้นระบบ Mac ภายนอกจากนั้นดำเนินการคำสั่งทางเลือกที่ระบุด้านล่างจากแอปพลิเคชัน Terminal อีกครั้งของคุณ-i, -bและ-sค่าตัวเลือกที่จะแตกต่างจากสิ่งที่แสดงด้านล่าง
gpt  add  -i  4  -b  587616672  -s  193097312  -t  windows  /dev/disk0
อีกทางเลือกหนึ่งคือการใช้gdiskเพื่อเพิ่มพาร์ติชันใน GPT
  หมายเหตุ: หลังจากแก้ไข GPT แล้วอาจจำเป็นต้องรีสตาร์ทคอมพิวเตอร์
 
หากจำเป็นให้เปิดใช้งาน SIP ขั้นตอนนี้ต้องใช้ขั้นตอนเดียวกับขั้นตอนที่ 1 ยกเว้นคำสั่งเพื่อเปิดใช้งาน SIP แสดงอยู่ด้านล่าง
csrutil  enable