确定同一远程计算机上的2个UNC路径是否在同一卷上

时间:2013-12-13 20:43:26

标签: c# unc driveinfo

如果提供给它的两条UNC路径位于同一卷上,我正在处理具有特殊条件的服务。但是我还没有找到一种方法来确定这个,因为C#DriveInfo类不适用于UNC路径。

EX:

\\ server \ path_a驻留在驱动器A

\\ server \ path_b驻留在驱动器B

有没有办法告诉\\ server \ path_a和\\ server \ path_b不会远程驻留在同一个驱动器上?

2 个答案:

答案 0 :(得分:0)

在c ++中,我会使用netenum share来获取远程物理路径,然后检查它们是否在同一条路径上。您可以在c#

中使用相同的内容

答案 1 :(得分:0)

当然可以,但您需要使用PInvoke调用位于NetAPI32库中的WinAPI接口。例如:

根据您的需要,您可以通过调用NetShareGetInfo来获取共享的SHARE_INFO_2结构,这将为您提供共享的信息对象。看看结构here shi2_path 属性将为您提供包含驱动器的本地路径。

MSDN文档说明了有关该属性的以下内容:

  

shi2_path

     

指向指定本地路径的Unicode字符串的指针   共享资源。对于磁盘,shi2_path是要共享的路径。

请注意: 您需要有足够的凭据才能获取SHARE_INFO_2对象。

然后当你得到两条路径时,你可以做一些像(非常简陋)的事情:

bool isDriveEqual = sharePath1[0] == sharePath2[0];