2012-07-25 5 views
5

私はSystem.DirectoryServicesネットワークを使用してサーバー上のマシンを取得する方法を知っています。 問題は、ネットワーク上のワークステーションやコンピュータを無視して、サーバーのみを取得することです。ネットワーク上のワークステーションとサーバーの違いをどのように把握していますか?

誰かがOSのバージョンを確認すると言う場合、Windows NTファミリのOSバージョン番号を取得する際の問題は、各番号がサーバと非サーバOSの両方に対応する可能性があることです(NTバージョン6.1がWin 7およびWindows Server 2008 R2)。代わりにoperatingSystemVersion財産で行くの

namespace Project1 
{ 
    class Class1 
    { 
     public static void Main(string[] args) 
     { 
      List<string> list = Class1.GetComputersOnNetwork();   
     } 

     public static List<string> GetComputersOnNetwork() 
     { 
      string fileName = "networkcomputers.txt"; 

      // Delete the file if it exists. 
      if (System.IO.File.Exists(fileName)) 
      { 
       System.IO.File.Delete(fileName); 
      } 

      // Create the file. 
      System.IO.FileStream fs = System.IO.File.Create(fileName, 1024); 

      StreamWriter strwr = new StreamWriter(fs); 

      int i = 0; 
      List<string> list = new List<string>(); 
      DirectoryEntry root = new DirectoryEntry("WinNT:");   
      foreach (DirectoryEntry computers in root.Children) 
      {     
       if ((computers.Name != "Schema")) 
       { 
        i++; 
        Console.WriteLine("Machine Number " + i + ": " + computers.Name); 
        strwr.WriteLine("Machine Number " + i + ": " + computers.Name); 
        list.Add(computers.Name); 
       }   
      } 
      return list; 
     } 
    } 
} 
+0

RPCはサーバーで有効になっていて、アプリケーションからアクセスできますか?たとえば、RPCを使用してリモートマシンのレジストリに照会することができます。 – mellamokb

+1

"server"とは、特定の種類の動作やインストールされたサービスではなく、「WindowsのサーバーSKUの実行」を意味しますか? – MNGwinn

+0

mellamokb 私はそれを調べます。 @MNGwinn はい、それは私が言及しているものです。 – praetor

答えて

2

operatingSystemプロパティを見て:

は、ここに私の基本的なテストクラスです。それはあなたにSKUの名前を与えるでしょう。サーバーOSのバージョンとそれ以外のバージョンを知る必要があります。IsServerブール値はありません。名前の付け方によっては、operatingSystemVersionでワイルドカード検索を実行して、文字列「server」を含むoperatingSystemVersionのコンピュータを見つけることができます。

+0

何らかの理由で、オペレーティングシステムのプロパティはありません(このドメインのマシンではおそらくブロックされています)が、とにかく助けてくれてありがとうございます。 – praetor

+0

System.Management名前空間からWMIコマンドを使用してしまいました。それはそれの世話をした:)。 – praetor

1

レジストリキーHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallationTypeを読むことができます。

キーは、次のとおりです。

  • "サーバー" は、このPCは、Windows Serverの(例えばのWindows Server 2012)を実行している場合。
  • このPCでWindowsデスクトップ(Windows 8.1など)が実行されている場合は「クライアント」。

このレジストリキーは、C#などの任意の言語を使用して読みやすいです。

詳細については、記事「distinguish between server os and workstation」を参照してください。

関連する問題