枚举远程域工作站上的驱动器列表

时间:2011-06-29 12:52:34

标签: c# vb.net enumeration share

我正在尝试提供一种在远程工作站上枚举硬盘的好方法,可能包括管理共享,因此我可以审核它们上的关键文件,而无需通过sneakernet访问它们。我有域管理员权限。安全政策禁止使用WMI,这将是一个很好的解决方案。

我可以使用Active Directory检索计算机列表,但我需要一些方法来确定每个系统上可用的驱动器。这样的事情可行吗?一位开发人员多年前提供了一些使用WNetOpenEnum的VB6代码,但我希望自从我们处于.NET框架4之后,也许有更优雅/可管理的方式来处理它。

任何想法都会非常感激!

编辑: 我热衷于使用更普遍支持的技术,例如标准API等.WMI是一个很好的解决方案,但Windows防火墙默认会阻止它,因此无法保证其可用性。

1 个答案:

答案 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"]);
            }

        }
    }
}