2012-03-01 4 views
1

私は、コンピュータのネットワーク領域をスキャンするアプリケーションを開発中です。見つかったクライアントから、私はIP、ホスト名、Macアドレス、OS情報などを取得する必要があります。OS C#を使用しているnetworkclientの情報

ここでは、OSのバージョンを除いて、上記のすべてがあります。誰かが私がこれを達成する方法の手がかりを持っていますか?

私は立ち往生しています。事前に

おかげで、クリストフ

答えて

0

使用WMIへの参照を追加 - System.Management DLLと適切なパラメータ - と

ManagementScope scope = new ManagementScope();  
      try 
      {      

       ConnectionOptions conOptions = new ConnectionOptions(); 

       options.Username = "<Provide username>";  
       options.Password = "<Provide password>";  
       options.EnablePrivileges = true;  
       options.Authority = "ntlmdomain:<domianname>";       

       scope = new ManagementScope(@"\\<IP address/machine name>\root\CIMV2", options); 

       scope.Connect();      

       SelectQuery query = new SelectQuery("SELECT * FROM Win32_OperatingSystem"); 

       ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); 

       using (ManagementObjectCollection queryCollection = searcher.Get()) 
       {  
        foreach (ManagementObject m in queryCollection) 
        {        

         Console.WriteLine(string.Format("Computer Name : {0}", m["csname"]));  
         Console.WriteLine(string.Format("Windows Directory : {0}", m["WindowsDirectory"]));  
         Console.WriteLine(string.Format("Operating System: {0}", m["Caption"]));  
         Console.WriteLine(string.Format("Version: {0}", m["Version"]); 

         Console.WriteLine(string.Format("Manufacturer : {0}", m["Manufacturer"])); 

        } 

       } 

      }  

      catch (Exception ex) 
      { 


      } 

を名前空間、使用次のコードを提供しますが、これを盗むためのアクセス権を持っている必要がありますアクセス権の例外を取得します。

+0

Nmapは解決策を教えてくれてありがとうございました。マシンにログインするための資格情報が必要なので、WMI解決策もありませんでした。 ポイントは、ネットワークに接続されたノートパソコンから実行できるアプリケーションであり、アプリケーションは特定の範囲をスキャンし、ネットワーク内に検出されたコンピュータを表示する必要があります。だから私はこれに解決策がないと思いますか?信任状を得ることは不可能です。とにかくありがとうございます。 Christophe、 –

0

あなたはSystem.DiagnosticsからProcessクラスを使用してNmapを実行し、その結果を解析することができます。C#で、独自のOSの検出器を作成

var process = new Process() 
{ 
    StartInfo = new ProcessStartInfo() 
    { 
     FileName = "cmd.exe", 
     Arguments = "/c nmap -O -v targethost", 
     CreateNoWindow = true, 
     UseShellExecute = false, 
     RedirectStandardOutput = true 
    } 
}; 
process.Start(); 

while (!process.StandardOutput.EndOfStream) 
{ 
    string line = process.StandardOutput.ReadLine(); 
    // here you can parse to obtain the operating system 
} 

は難しいだろうが、あなたはそれがどのように動作するかの概要に興味があるならば、あなたは見つけることができますこのNmapの章では:Chapter 8. Remote OS Detection

関連する問題