有没有办法找到磁盘上文件的确切位置(地址)?
Is there a way to find exact location ( adress ) of file on disk?
我正在为 Windows/Linux.
使用 C++ 开发软件
我想在 运行 时间创建一个文件(txt,json,许可证,随便你命名),并将其保存在某个地方。是否有可能在 C++ 中获取该文件在磁盘上的确切位置,以便如果我重新启动应用程序并读取该地址(或其他地址),我将能够访问其数据?
这样做的目的是,如果有人将软件复制到另一个 OS,或创建了 OS 的图像,并试图 运行 它,地址将不再有效,它将失败。这是尝试添加另一层(在许可证管理之上)以防止软件复制。
磁盘映像逐字节复制它,这意味着磁盘上的所有地址(位置)都保持完全相同。所以您的复制保护实际上不会起作用 - 您仍然可以轻松地克隆磁盘,同时保留您的特殊复制保护文件。此外,一个文件甚至可能没有在磁盘上定义的位置:它可能被分成许多碎片并散布在整个磁盘上。您无法找到不存在的地址。文件系统也可能只是在感觉合适的时候四处移动文件,所以即使在同一个系统上,地址也不会保持不变。 (这就是碎片整理的作用。Windows,例如,按照固定的时间表移动文件以使文件系统更快。)
TL;DR 这行不通。
我正在为 Windows/Linux.
使用 C++ 开发软件我想在 运行 时间创建一个文件(txt,json,许可证,随便你命名),并将其保存在某个地方。是否有可能在 C++ 中获取该文件在磁盘上的确切位置,以便如果我重新启动应用程序并读取该地址(或其他地址),我将能够访问其数据?
这样做的目的是,如果有人将软件复制到另一个 OS,或创建了 OS 的图像,并试图 运行 它,地址将不再有效,它将失败。这是尝试添加另一层(在许可证管理之上)以防止软件复制。
磁盘映像逐字节复制它,这意味着磁盘上的所有地址(位置)都保持完全相同。所以您的复制保护实际上不会起作用 - 您仍然可以轻松地克隆磁盘,同时保留您的特殊复制保护文件。此外,一个文件甚至可能没有在磁盘上定义的位置:它可能被分成许多碎片并散布在整个磁盘上。您无法找到不存在的地址。文件系统也可能只是在感觉合适的时候四处移动文件,所以即使在同一个系统上,地址也不会保持不变。 (这就是碎片整理的作用。Windows,例如,按照固定的时间表移动文件以使文件系统更快。)
TL;DR 这行不通。