【发布时间】:2012-03-28 13:16:38
【问题描述】:
我正在尝试创建一个程序,它将一系列 10-30 个字母/数字以原始格式写入磁盘(而不是操作系统将读取的文件)。也许为了让我的尝试更清楚,如果您要在十六进制编辑器中打开磁盘,您会看到 10-30 个字母/数字,但 Windows 资源管理器等文件管理器不会看到它(因为数据不是文件) .
我的目标是能够用一系列字符“签名”磁盘,并能够在我的程序中读取和写入该“签名”。我理解 NTFS 与其他文件系统一样使用 NTFS 标志对其分区进行签名,并且我必须小心不要将我的签名写入任何这些关键部分。
C++/C 中是否有任何库可以帮助我在低级别写入磁盘,我如何知道开始将签名写入的安全扇区?为了缩小范围,它只需要能够写入 NTFS、FAT、FAT32、FAT16 和 exFAT 文件系统并在 Windows 上运行。非常感谢任何链接或参考!
编辑:经过一些研究,USB 驱动器只允许 1 个分区,而没有应用会为用户带来更多问题的黑客技巧。不幸的是,这排除了“分区想法”。
【问题讨论】:
-
你打算如何阻止文件系统覆盖你的“签名”?
-
文件系统可以对磁盘做任何事情。这就是你拥有它的原因。事实上,磁盘的“top/start”通常是文件系统最活跃的地方——它最基本的数据结构通常存储在那里。
-
您不想这样做至少有几个原因。 (1) 没有“管理员”或“root”权限,这是不可能的。 (2) 即使您可以以这种方式写入磁盘,地球上的任何病毒检查器都会将您的程序标记为“邪恶”。 (3) 你的程序将如何适应文件系统的未来变化?
-
好吧,如果您创建自己的整个 分区,那么您可以在其中放置任何您想要的内容(但您仍然需要管理员/root 访问权限才能执行此操作原始写入)。您是要“签署”disk 还是filesystem?有很大的不同。
-
@GregHewgill :您应该发布分区想法作为答案。迄今为止最干净的方式。