0

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

前任:

\\server\path_a 位于驱动器 A

\\server\path_b 位于驱动器 B

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

4

2 回答 2

0

在 c++ 中,我将使用 netenum share 来获取远程物理路径,然后检查它们是否在同一路径上。你可能在 c# 中也一样

于 2013-12-13T20:58:26.893 回答
0

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

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

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

shi2_path

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

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

然后,当您获得两条路径时,您可以执行以下操作(非常基本):

bool isDriveEqual = sharePath1[0] == sharePath2[0];
于 2016-12-23T22:46:59.760 回答