读取硬盘驱动器的字节

使用hex编辑器HxDen可以读取(和编辑)硬盘驱动器或USB密钥或RAM中的字节。 也就是说,可以读取/更改硬盘上的第一个字节。

我知道如何使用C ++从文件中读取字节 ,但我想知道如何做到这一点的硬盘。

为了简单起见,给定一个正整数n,如何使用C ++读取硬盘上的字节数n? (我想做C ++,但如果有一个更简单的方法,我想听听那个。)

如果有问题,我在Windows 7上使用MinGW 。

Solutions Collecting From Web of "读取硬盘驱动器的字节"

这是记录在MSDN库文章中的CreateFile ,“物理磁盘和卷”部分。 此代码运行良好,直接读取C:驱动器:

HANDLE hdisk = CreateFile(L"\\\\.\\C:", GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, nullptr, OPEN_EXISTING, 0, NULL); if (hdisk == INVALID_HANDLE_VALUE) { int err = GetLastError(); // report error... return -err; } LARGE_INTEGER position = { 0 }; BOOL ok = SetFilePointerEx(hdisk, position, nullptr, FILE_BEGIN); assert(ok); BYTE buf[65536]; DWORD read; ok = ReadFile(hdisk, buf, 65536, &read, nullptr); assert(ok); // etc.. 

管理员权限是必需的,你必须在Win7上运行你的程序,否则你会得到错误5(拒绝访问)。