Пытаюсь создать копию MBR записывая её в файл mbr.img:
[DllImport("kernel32.dll", SetLastError = true, CharSet = CharSet.Auto)]
private static extern SafeFileHandle CreateFile(string lpFileName,[MarshalAs(UnmanagedType.U4)] FileAccess dwDesiredAccess,
[MarshalAs(UnmanagedType.U4)] FileShare dwShareMode,
IntPtr lpSecurityAttributes,
[MarshalAs(UnmanagedType.U4)] FileMode dwCreationDisposition,
[MarshalAs(UnmanagedType.U4)] FileAttributes dwFlagsAndAttributes,
IntPtr hTemplateFile);
SafeFileHandle handle = CreateFile(lpFileName: @"\\.\C:",dwDesiredAccess: FileAccess.Read,dwShareMode: FileShare.ReadWrite,
lpSecurityAttributes: IntPtr.Zero,dwCreationDisposition: FileMode.OpenOrCreate,
dwFlagsAndAttributes: FileAttributes.Normal,hTemplateFile: 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);
}
}
Ошибок нету, но создаётся пустой файл mbr.img
В чём может быть ошибка?
P.S: На Windows 7 работает нормально. Пишу на windows 10
Пример взял от сюда: Создания файла Master Boot Record
Проблема решена добавлением using в запись файла:
using (var handle = CreateFile(@"\\.\C:", FileAccess.Read, FileShare.ReadWrite, IntPtr.Zero, FileMode.OpenOrCreate, FileAttributes.Normal, IntPtr.Zero))
{
using (var disk = new FileStream(handle, FileAccess.Read))
{
Console.WriteLine(value: "Starting MBR Backup...");
try
{
disk.Read(new byte[512], 0, (new byte[512]).Length);
using (var mbrSave = new FileStream(path: "mbr.img", mode: FileMode.Create))
{
mbrSave.Write(array: new byte[512], offset: 0, count: (new byte[512]).Length);
Console.WriteLine("MBR Backuped to mymbr.img success!");
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Допустим, есть приложение, написанное на каком-то языкеДанное приложение не имеет API, но имеет некоторый интерфейс
Задача: создать два логаПервый для записи Info, второй для записи Errors
У меня программа для решения уравнения методом касательнойНа форме разместила интервал и точность, а на кнопку Вычислить нужно прописать...