有没有办法找到文件在磁盘上的确切位置(地址)?

-1 c++ linux memory windows disk

我正在使用 C++ 为 Windows/Linux 开发一个软件。

我想在运行时创建一个文件(txt、json、许可证,你能想到的),并将其保存在某个地方。在 C++ 中是否可以获取该文件在磁盘上的确切位置,以便如果我重新启动应用程序并读取该地址(或其他地址),我将能够访问其数据?

这样做的目的是,如果有人将软件复制到另一个操作系统,或创建操作系统的映像并尝试运行它,则该地址将不再有效并且会失败。这是尝试添加另一层(在许可证管理之上)以防止软件复制。

Jon*_* S. 5

磁盘映像逐字节复制它,这意味着磁盘上的所有地址(位置)保持完全相同。因此,您的复制保护实际上不起作用 - 您仍然可以轻松克隆磁盘,同时保留特殊的复制保护文件。此外,文件甚至可能在磁盘上没有定义的位置:它可能被分成许多片段并分散在整个磁盘上。您无法找到不存在的地址。文件系统也可能会在需要时移动文件,因此即使在同一系统上,地址也不会保持不变。(这就是碎片整理的作用。例如,Windows 会按照固定的时间表移动文件,以使文件系统更快。)

TL;DR 这是行不通的。