2011-06-29 21 views
0

我想拿出来枚举远程工作站,可能包括管理共享硬盘的好方法,所以我可以对他们的审核密钥文件,而无需通过sneakernet访问它们。我有域管理员权限。安全策略禁止使用WMI,这将是一个很好的解决方案。枚举驱动器的列表上的远程域工作站

我可以检索使用Active Directory的计算机列表,但我需要一些方法来确定哪些可用的驱动器每个系统上。这样的事情是否可行?一位同行的开发者提供了一些VB6代码年前使用WNetOpenEnum,但我希望,因为我们是在.NET Framework 4中,也许有这个工作更优雅/管理方式。

任何想法,将不胜感激!

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

回答

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

     } 
    } 
} 
+0

这将是使用WMI,其中OP已经排除了。 –

+0

@Damien_The_Unbeliever,哎呀,错过了这个问题! –

+0

@Damien,无论如何非常感谢代码,我发现它对于别的东西很有用! – TripleAntigen