我想知道远程主机是否具有对网络共享的读写访问权限。一开始我想看看我是否可以查询目标主机查询 UNC 路径以获取信息的能力,ala
var query = string.Format("select * from CIM_Directory where name = '{0}'", path);
这适用于本地文件,例如
var path = @"c:\\Windows";
但是,我想不出查询 UNC 路径(例如 \\foo\bar)的适当方法。该查询始终返回一个空白集。我看到了一个有关执行远程文件的相关问题,该问题的解决方案最终是 PsExec。我希望完全使用 WMI 来理想地解决这个问题,而不必依赖第 3 方执行人员,或者将我自己的工具上传到远程主机。
干杯
这是我现在正在尝试做的一些使用示例(取出 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();
}
}
}