我正在尝试提供一种在远程工作站上枚举硬盘的好方法,可能包括管理共享,因此我可以审核它们上的关键文件,而无需通过sneakernet访问它们。我有域管理员权限。安全政策禁止使用WMI,这将是一个很好的解决方案。
我可以使用Active Directory检索计算机列表,但我需要一些方法来确定每个系统上可用的驱动器。这样的事情可行吗?一位开发人员多年前提供了一些使用WNetOpenEnum的VB6代码,但我希望自从我们处于.NET框架4之后,也许有更优雅/可管理的方式来处理它。
任何想法都会非常感激!
编辑: 我热衷于使用更普遍支持的技术,例如标准API等.WMI是一个很好的解决方案,但Windows防火墙默认会阻止它,因此无法保证其可用性。
答案 0 :(得分:2)
添加对System.Management
的引用,然后:
using System;
using System.Management;
namespace WmiConnectRemote
{
class Program
{
static void Main(string[] args)
{
var machine = "XXXX";
var options = new ConnectionOptions { Username = "XXXX", Password = "XXXX" };
var scope = new ManagementScope(@"\\" + machine + @"\root\cimv2", options);
var queryString = "select Name, Size, FreeSpace from Win32_LogicalDisk where DriveType=3"; var query = new ObjectQuery(queryString);
var worker = new ManagementObjectSearcher(scope, query);
var results = worker.Get();
foreach (ManagementObject item in results)
{
Console.WriteLine("{0} {2} {1}", item["Name"], item["FreeSpace"], item["Size"]);
}
}
}
}