【问题标题】:Enumerating list of drives on a remote domain workstation枚举远程域工作站上的驱动器列表
【发布时间】:2011-07-14 00:57:53
【问题描述】:

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

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

任何想法将不胜感激!

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

【问题讨论】:

    标签: c# vb.net enumeration share


    【解决方案1】:

    添加对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"]);
                }
    
            }
        }
    }
    

    【讨论】:

    • 那将使用 WMI,OP 已经排除了。
    • @Damien_The_Unbeliever,哎呀,错过了问题中的那一点!
    • @Damien,非常感谢您提供的代码,我发现它对其他用途很有用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    • 2013-03-30
    • 1970-01-01
    • 2012-11-24
    • 1970-01-01
    相关资源
    最近更新 更多