2012-07-25 8 views
5

मुझे पता है कि सिस्टम का उपयोग कर सर्वर पर मशीनों को कैसे प्राप्त करें। डायरेक्टरी सर्विसेज नेटवर्क। मुद्दा यह है कि मैं नेटवर्क पर वर्कस्टेशन/कंप्यूटरों को अनदेखा करना चाहता हूं और केवल सर्वर पुनर्प्राप्त करना चाहता हूं।नेटवर्क पर वर्कस्टेशन और सर्वर के बीच आप अंतर कैसे ढूंढते हैं?

यदि कोई ओएस संस्करण की जांच करने के लिए कहता है, तो विन एनटी परिवार ओएस संस्करण संख्या प्राप्त करने में समस्या यह है कि प्रत्येक संख्या सर्वर और गैर-सर्वर ओएस दोनों के अनुरूप हो सकती है (जैसे एनटी संस्करण 6.1 विन दोनों को संदर्भित करता है 7 और विन सर्वर 2008 आर 2)।

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

क्या आरपीसी सर्वर पर सक्षम है और आपके आवेदन के लिए सुलभ है? उदाहरण के लिए, आप आरपीसी के साथ रिमोट मशीन की रजिस्ट्री से पूछ सकते हैं। – mellamokb

+1

"सर्वर" द्वारा, आपका मतलब है "विंडोज़ का सर्वर एसकेयू चला रहा है" और किसी विशेष प्रकार के व्यवहार या स्थापित सेवाओं का नहीं? – MNGwinn

+0

mellamokb मैं इसे देख लूंगा। @MNGwinn हां, यही वह है जिसका मैं जिक्र कर रहा हूं। – praetor

उत्तर

2
इसके बजाय operatingSystemVersion होटल में जाने की

, operatingSystem संपत्ति को देखो:

यहाँ मेरी बुनियादी परीक्षण वर्ग है। इससे आपको एसकेयू का नाम मिल जाएगा। आपको यह जानने की आवश्यकता होगी कि कौन से सर्वर ओएस संस्करण हैं और जो नहीं हैं - IsServer बूलियन नहीं है। उनके नाम के आधार पर, आप operatingSystemVersion पर operatingSystemVersion वाले स्ट्रिंग "सर्वर" वाले कंप्यूटर खोजने के लिए वाइल्डकार्ड खोज करने में सक्षम हो सकते हैं।

+0

किसी भी कारण से, कोई ऑपरेटिंग सिस्टम प्रॉपर्टी नहीं है (यह शायद इस डोमेन पर मशीनों पर अवरुद्ध है), लेकिन वैसे भी मदद के लिए बहुत बहुत धन्यवाद। – praetor

+0

मैं सिस्टम से WMI कमांड का उपयोग कर समाप्त हुआ। प्रबंधन नामस्थान। उसमें इसका ख्याल रखा :)। – praetor

1

आप रजिस्ट्री कुंजी HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\InstallationType पढ़ सकते हैं।

कुंजी है:

  • "सर्वर" इस ​​पीसी Windows सर्वर (जैसे विंडोज सर्वर 2012) चल रहा है तो।
  • "क्लाइंट" यदि यह पीसी विंडोज डेस्कटॉप चला रहा है (उदा। विंडोज 8.1)।

यह रजिस्ट्री कुंजी सी # जैसी किसी भी भाषा का उपयोग करके पढ़ने में काफी आसान है।

अधिक जानकारी के लिए, "distinguish between server os and workstation" नामक लेख देखें।

संबंधित मुद्दे