我需要修改 Windows 的 MBR,我真的很想从 Windows 中执行此操作。
这是我的问题。我知道我可以通过调用 CreateFile 来处理物理设备。MBR 会一直在 \\.\PHYSICALDRIVE0 上吗?另外,我还在学习直接从磁盘读取的 Windows API。readabsolutesectors 和 writeabsolutesectdors 是我需要用来读取/写入包含 MBR 的磁盘扇区的两个函数吗?
根据我自己学到的东西进行编辑。MBR 并不总是在 \\.\PHYSICALDRIVE0 上。此外,您可以通过使用包含 MBR 的驱动器的设备名称调用 CreateFile 来写入引导扇区(至少作为 XP 上的管理员)。此外,您可以通过简单地调用 WriteFile 并传递调用 CreateFile 创建的设备的句柄来写入该驱动器。
编辑以解决 Joel Coehoorn。我需要编辑 MBR,因为我正在处理一个需要在 BIOS 中的 POST 之后,但在允许 Windows 启动之前修改硬件寄存器的项目。我们的计划是通过修改引导加载程序以在 Windows 启动之前执行我们的代码来进行这些更改。
编辑 Cd-MaN。谢谢(你的)信息。但是,您的回答中没有任何我不知道的内容,而且您的回答也没有解决我的问题。由于多种原因,特别是注册表绝对不会做我们需要的事情。一个重要的原因是 Windows 是与我们的产品一起运行的多个软件层中的最高层。这些更改甚至需要在较低级别运行之前发生,因此注册表将无法正常工作。
PS 用于 Cd-MaN。据我了解,您提供的信息并不完全正确。对于 Vista,如果要写入的扇区是引导扇区,我认为您可以写入卷。请参阅http://support.microsoft.com/kb/942448