2017-10-05 25 views

답변

1
using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
using System.Runtime.InteropServices; 
using System.Text; 
using System.Threading.Tasks; 

namespace BackupMBR 
{ 
    class Program 
    { 

     [DllImport("kernel32")] 
     private static extern IntPtr CreateFile(
      string lpFileName, 
      uint dwDesiredAccess, 
      uint dwShareMode, 
      IntPtr lpSecurityAttributes, 
      uint dwCreationDisposition, 
      uint dwFlagsAndAttributes, 
      IntPtr hTemplateFile); 

     static void Main(string[] args) 
     { 
      IntPtr handle = CreateFile(
       @"\\.\PHYSICALDRIVE0", 
       0x80000000, 
       1, 
       IntPtr.Zero, 
       3, 
       0, 
       IntPtr.Zero 
      ); 
      using (FileStream disk = new FileStream(handle, FileAccess.Read)) 
      { 
       byte[] mbrData = new byte[512]; 
       Console.WriteLine("Starting MBR Backup..."); 
       try 
       { 
        disk.Read(mbrData, 0, mbrData.Length); 
        FileStream mbrSave = new FileStream("mbr.img", FileMode.Create); 
        mbrSave.Write(mbrData, 0, mbrData.Length); 
        Console.WriteLine("MBR Backuped to mymbr.img success!"); 
       } 
       catch (Exception e) 
       { 
        Console.WriteLine(e.Message); 
       } 
      } 

      Console.ReadKey(); 

     } 
    } 
} 
+0

GPT는 무엇이 좋을까요? –

+1

@DaveBurton 좋은 지적. Microsoft의 [이 문서] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa363785 (v = vs.85) .aspx # partition_styles)를 검토하여 자세한 내용을 확인합니다. – Volomike