远程共享文件夹和驱动器 C#

4
我想在C#中通过网络访问远程机器上的驱动器/文件夹/子文件夹/文件。
我知道可以使用WMI实现这一点。然而,由于安全权限的限制,WMI可能无法在远程计算机上执行。
有没有其他的方法可以在C#中枚举网络上远程计算机的文件夹/子文件夹/文件呢?
谢谢! Gagan

“远程机器”是指文件共享(可以通过UNC路径访问,例如\machine\share\file.txt),FTP站点还是其他任何东西? - Avner Shahar-Kashtan
是的,像 \machine\C$ 这样的路径。如果我们提供了网络机器的凭据,可以枚举网络机器上的文件夹和文件吗? - Gags
2个回答

8

可以像本地目录一样使用System.IO 命名空间中的类(如Directory.EnumerateFiles)枚举UNC路径上的共享文件夹。

foreach (var file in Directory.EnumerateFiles(@"\\machine\c$"))
{
}

然而,正如你所说,存在凭据的问题。如果您需要指定不同的凭据来访问共享资源,您将需要对远程计算机进行身份验证。幸运的是,this answer提供了一个很好的解决方案,用于创建临时网络连接。
using (new NetworkConnection("\\machine\c$", new NetworkCredential("username", "password")))
{
    foreach (var file in Directory.EnumerateFiles(@"\\machine\c$"))
    {
    }
}

0

您可以使用forfiles命令,我假设所有的机器都是Windows操作系统。

请参考此链接以获取更多信息:Forfiles


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接