Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 检测符号链接、连接点、安装点和硬链接_C#_.net_Windows_Filesystems_Reparsepoint - Fatal编程技术网

C# 检测符号链接、连接点、安装点和硬链接

C# 检测符号链接、连接点、安装点和硬链接,c#,.net,windows,filesystems,reparsepoint,C#,.net,Windows,Filesystems,Reparsepoint,有人知道如何检查文件或目录是否是符号链接、连接点、装载点或硬链接 据我所知,符号链接是通过检查文件的“ReparsePoint”属性来检测的。 通过检查目录中的“RepassePoint”属性来检测连接点。因此,如果在文件上设置了“ReparsePoint”属性,那么它必须是一个符号链接,否则,如果在目录上设置了“ReparsePoint”,那么它只能是一个连接点……对吗 到目前为止还不错,但我仍然不知道如何检测“挂载点”和“硬链接”。 有人能告诉我怎么做吗?符号链接、连接点和挂载点都是不同重分

有人知道如何检查文件或目录是否是符号链接连接点装载点硬链接

据我所知,符号链接是通过检查文件的“ReparsePoint”属性来检测的。 通过检查目录中的“RepassePoint”属性来检测连接点。因此,如果在文件上设置了“ReparsePoint”属性,那么它必须是一个符号链接,否则,如果在目录上设置了“ReparsePoint”,那么它只能是一个连接点……对吗

到目前为止还不错,但我仍然不知道如何检测“挂载点”和“硬链接”。
有人能告诉我怎么做吗?

符号链接、连接点和挂载点都是不同重分析点的示例。然而,硬链接只是普通文件。在NTFS上,所有文件都是硬链接。您可以检测到一个文件有多个指向它的硬链接,但没有它指向的“真实文件”。您可以将硬链接视为同一文件的不同名称

以下是有关从C#访问重分析点的一些信息:


下面是一些关于如何在C中执行此操作的信息:

硬链接:

通过调用Win32 API函数,可以检测多个名称是否指向同一“数据块”或“文件内容”。返回结构的nNumberOfLinks成员包含链接总数

装载点:

您可以使用和遍历卷上的所有装入点。还应用于关闭搜索句柄

来自.NET


从.NET执行此操作需要一些p/Invoke magic

请查看我的问题。这有点像问题的翻版。但我解释了如何使用C/C++实现重分析点、装入点、连接和符号链接。与其盲目地提供指向API的链接,不如…

Ok,这意味着如果a有一个FileA.txt和一个指向FileA.txt的硬链接FileB.txt,就无法检测FileB.txt是硬链接?它们都是硬链接。好吧,那么有没有办法检测挂载点呢?我认为没有一种可移植的方法,因为这是操作系统定义的概念。在linux上,您可以访问/proc/mounts并获取每行的第二个字段。挂载点是重分析点,就像连接点一样。您是否在问如何区分不同类型的重分析点?或者你想知道他们指的是什么?