Я получаю исключение ошибки 5 при отказе в доступе при попытке перезаписать секторы, принадлежащие системным файлам, но может успешно работать на других секторах. Затем я демонтировал (mountvol X: /p) определенный раздел, связанный с ними секторами, но безрезультатно. Мне нужно решение, потому что я провожу эксперимент с целью лучшего понимания и, в конечном итоге, возможности восстановления поврежденного $ MFT. Благодарю.
Путь "\\.\PhysicalDrive1"
Public Function WriteBytes(ByVal path As String, _
ByVal OFFSET_POS As Long, ByVal data As Byte()) As Boolean
Dim handle As IntPtr = IntPtr.Zero
handle = CreateFile(path, FileAccess.ReadWrite, FileShare.ReadWrite, _
IntPtr.Zero, FileMode.Open, FileAttributes.Normal, IntPtr.Zero)
Dim bytesWritten As UInteger
Dim nativeOverlapped = New NativeOverlapped With {
.OffsetLow = 0,
.OffsetHigh = 0
}
Dim msg As Boolean = SetFilePointerEx(handle, OFFSET_POS, IntPtr.Zero,
MoveMethod.FILE_CURRENT)
Debug.WriteLine(String.Format("{0}: Setting Sector to position {1} ", _
msg, OFFSET_POS \ 512))
If Not WriteFile(handle, data, CUInt(data.Length), _
bytesWritten, nativeOverlapped) Then
Debug.WriteLine(String.Format("Unable to write to the volume. Error code: {0}", Marshal.GetLastWin32Error()))
Return False
End If
Return True
End Function