C# 了解硬盘上安装程序/文件的位置

C# 了解硬盘上安装程序/文件的位置,c#,windows,C#,Windows,假设我有一个文件:test.txt,我把它保存在硬盘上 是否有办法确定文件保存在硬盘上的哪个(物理)位置 例如,硬盘磁道10上的矢量12 我不知道我是否理解了上面的术语,但我希望你明白我的意思 我想写一个程序,当用户可以指向一个文件,该程序将发现该文件在硬盘上的位置。类似于旧的碎片整理(它是Windows;)),其中显示了磁盘的哪些部分正在使用 这叫什么?它能实现吗?(我不是在寻找代码(虽然Exmaple是ok ofc),而是在寻找它是否可行) 另外,客户端将是Windows 7(因此,如果重要

假设我有一个文件:
test.txt
,我把它保存在硬盘上

是否有办法确定文件保存在硬盘上的哪个(物理)位置

例如,硬盘磁道10上的矢量12

我不知道我是否理解了上面的术语,但我希望你明白我的意思

我想写一个程序,当用户可以指向一个文件,该程序将发现该文件在硬盘上的位置。类似于旧的碎片整理(它是Windows;)),其中显示了磁盘的哪些部分正在使用

这叫什么?它能实现吗?(我不是在寻找代码(虽然Exmaple是ok ofc),而是在寻找它是否可行)


另外,客户端将是Windows 7(因此,如果重要的话,请考虑NTFS)。

我非常确定,在托管代码中执行这种低级磁盘I/o将是……困难的,充其量。有人做过类似的事情:

你写的任何东西都必须依赖于硬件:除非你知道你在说什么硬件,否则你根本不知道它是如何物理存储数据的(例如,USB记忆棒既没有盘片、磁道也没有扇区,也没有旋转。然而,出于所有的意图和目的,它似乎是一个磁盘)

通常,您会编写某种设备驱动程序来完成此任务。此链接


可能会有帮助。

在杰弗里·沃尔的博客中你会发现。他的<代码> GETFILMAP 方法SEMS接近您所需要的。

从C++可以实现,所以稍加互操作,您就可以了。 在MSDN中查找以开始。

我可以问一下,为什么您需要知道文件x是“在第10轨道的向量12上”?