【发布时间】:2014-06-18 19:29:54
【问题描述】:
我想知道远程主机是否有网络共享的读写权限。一开始我想看看我是否可以查询目标主机查询 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();
}
}
}
【问题讨论】:
-
对共享的访问不受客户端主机控制。共享权限和 Windows 文件系统 ACL 是按用户帐户设置的,因此您的问题没有任何意义。您可以询问特定用户帐户是否有权访问给定共享。
-
这正是我想要做的。我需要验证在给定主机上具有给定凭据集的用户是否可以访问 UNC 路径。