我想查明远程主机是否具有对网络共享的读写访问权限。首先,我想看看是否可以查询目标主机查询 UNC 路径信息的能力,ala
var query = string.Format("select * from CIM_Directory where name = '{0}'", path);
这对于本地文件来说效果很好,例如
var path = @"c:\\Windows";
但是,我无法找出查询 UNC 路径的适当方法(例如 \\foo\bar)。查询始终返回空白集。我看到一个有关执行远程文件的相关问题,该问题的解决方案最终是 PsExec。我希望完全使用 WMI 理想地解决这个问题,而不必依赖第 3 方执行人员,或将我自己的工具上传到远程主机。
Cheers
这是我现在正在尝试做的一些使用示例(取出了 var 值):
using System;
using System.Linq;
using System.Management;
namespace netie
{
class Program
{
static void Main()
{
var connection = new ConnectionOptions
{
Username = "user",
Password = "pass",
Authority = "domain",
Impersonation = ImpersonationLevel.Impersonate,
EnablePrivileges = true
};
var scope = new ManagementScope("\\\\remote\\root\\CIMV2", connection);
scope.Connect();
var path = @"\\\\foo\\bar\\";
var queryString = string.Format("select * from CIM_Directory where name = '{0}'", path);
try
{
var query = new ObjectQuery(queryString);
var searcher = new ManagementObjectSearcher(scope, query);
foreach (var queryObj in searcher.Get().Cast<ManagementObject>())
{
Console.WriteLine("Number of properties: {0}", queryObj.Properties.Count);
foreach (var prop in queryObj.Properties)
{
Console.WriteLine("{0}: {1}", prop.Name, prop.Value);
}
Console.WriteLine();
}
}
catch (Exception e)
{
Console.WriteLine(e);
}
Console.ReadLine();
}
}
}