【问题标题】:Access unallocated space of HDD访问硬盘的未分配空间
【发布时间】:2012-08-30 08:46:33
【问题描述】:

如何从 Windows 访问和写入硬盘驱动器的未分配空间?

我所说的未分配硬盘空间是指创建分区后硬盘上剩余的空间,或者只是硬盘上尚未分配给分区的空闲空间。

【问题讨论】:

  • 有人愿意评论为什么对一个完全有效的问题投反对票吗?
  • This may be relevant,如果你还没有遇到过的话。简短的回答:在 XP 和旧版本的 Windows 中,这是非常可能的。在较新的版本中,您需要编写驱动程序级代码来执行此操作。根据您的用例,使用 Linux 等主机操作系统可能会更容易。
  • 任何关于文件系统驱动级概念、代码等的学习资料?
  • 您可以开始阅读有关 Windows Driver Kit (msdn.microsoft.com/en-us/library/windows/hardware/gg487428.aspx) 的信息。您需要任何类型的内核模式驱动程序 - 您的目标只是进入内核模式。

标签: c++ windows winapi filesystems operating-system


【解决方案1】:

您需要读取硬盘的分区表,找到未分配的空间,然后读取该空间。此类操作需要直接访问磁盘。在 Vista 之前,可以调用 CreateFile("磁盘本身的特殊名称") 来像打开文件一样打开磁盘。在 Vista 和 Windows 7 中,由于 Windows 的安全限制(至少对于非管理员帐户),它不再可能。您可以使用我们的RawDisk 产品访问磁盘扇区,以便在 Vista 和更高版本的系统中进行读写。请注意,RawDisk 包含需要安装管理权限的内核模式驱动程序(这些权限并不总是可用)。

【讨论】:

  • 嗯?我通过 XxxxFile API 在 Windows 7 中拥有 RW 扇区级访问权限,包括未分配空间的扇区。
  • @zapador 如果你有管理员权限,你可以访问磁盘进行阅读。即使是管理员也禁止编写 afaik。
  • 需要管理员权限,但我确定我正在使用 Windows 7 中用户模式应用程序的引导加载程序写入磁盘第一磁道的 63 个扇区。我不知道它是否可以在 Vista 中工作。
  • @zapador 您是否尝试在 IDE 之外做同样的事情?它奏效了吗?对于大多数人来说,由于安全限制,这不起作用。也许这也取决于一些修补程序。我已经更新了答案。此外,如果您收到有关在 IDE 之外测试代码的信息,也会很有趣。
  • 是的,事实上它可以在数百台 PC 上运行,包括 XP 和 Windows 7 SP1。也许版本或更新之间发生了一些变化。我使用 HxD 作为磁盘编辑器,我认为它也不需要内核模式代码。我没有尝试读取/写入已卸载卷的块。希望对您有所帮助。
猜你喜欢
  • 1970-01-01
  • 2012-03-27
  • 2014-10-04
  • 2023-03-09
  • 2011-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-11
相关资源
最近更新 更多