2012-01-27 10 views
12

पर आधारित एक अद्वितीय आईडी बनाना मैं एक लाइसेंस तैयार कर रहा हूं जो मशीन के लिए विशिष्ट है। लाइसेंस निम्नलिखित मदों पर आधारित है:सी # हार्डवेयर आईडी

  1. मैक पता
  2. सीपीयू सीरियल नंबर
  3. कंप्यूटर वॉल्यूम सीरियल drive0 की संख्या

मैं यह सोचते हैं कि अगर 3 मैच के 2, तो मेरा लाइसेंस मान्य है। तो, एक नया नेटवर्क कार्ड प्राप्त हो सकता है, और लाइसेंस अभी भी मान्य है, आदि

क्या यह एक अच्छा दृष्टिकोण है या क्या मुझे नियमित रूप से मेल खाने या बदलने के साथ समस्याएं नहीं हैं?

मैं कंप्यूटर के लिए एक अद्वितीय पहचानकर्ता प्राप्त करने की कोशिश कर रहा हूं ताकि मैं लाइसेंस को प्रमाणित कर सकूं।

कृपया मुझे बताएं कि यह कैसा दिखता है या यदि आपके पास बेहतर समाधान है!

फिर से धन्यवाद!

** यहाँ क्या मैं के साथ **

मैं केवल VolumeSerial, सीपीयूआईडी, और VideoControllerDescription का उपयोग कर समाप्त हो गया आए।

public enum HardwareProfileComponents 
    { 
     ComputerModel, 
     VolumeSerial, 
     CpuId, 
     MemoryCapacity, 
     VideoControllerDescription 
    } 

    public static Dictionary<string, string> HardwareProfile() 
    { 
     var retval = new Dictionary<string, string> 
         { 
          {HardwareProfileComponents.ComputerModel.ToString(), GetComputerModel()}, 
          {HardwareProfileComponents.VolumeSerial.ToString(), GetVolumeSerial()}, 
          {HardwareProfileComponents.CpuId.ToString(), GetCpuId()}, 
          {HardwareProfileComponents.MemoryCapacity.ToString(), GetMemoryAmount()}, 
          {HardwareProfileComponents.VideoControllerDescription.ToString(), GetVideoControllerDescription()} 
         }; 
     return retval; 

    } 

    private static string GetVideoControllerDescription() 
    { 
     Console.WriteLine("GetVideoControllerDescription"); 

     var s1 = new ManagementObjectSearcher("select * from Win32_VideoController"); 
     foreach (ManagementObject oReturn in s1.Get()) 
     { 
      var desc = oReturn["AdapterRam"]; 
      if (desc == null) continue; 
      return oReturn["Description"].ToString().Trim(); 
     } 
     return string.Empty; 
    } 


    private static string GetComputerModel() 
    { 
     Console.WriteLine("GetComputerModel"); 
     var s1 = new ManagementObjectSearcher("select * from Win32_ComputerSystem"); 
     foreach (ManagementObject oReturn in s1.Get()) 
     { 
      return oReturn["Model"].ToString().Trim(); 
     }    
     return string.Empty; 
    } 

    private static string GetMemoryAmount() 
    { 
     Console.WriteLine("GetMemoryAmount"); 
     var s1 = new ManagementObjectSearcher("select * from Win32_PhysicalMemory"); 
     foreach (ManagementObject oReturn in s1.Get()) 
     { 
      return oReturn["Capacity"].ToString().Trim(); 
     } 
     return string.Empty; 
    } 

    private static string GetVolumeSerial() 
    { 
     Console.WriteLine("GetVolumeSerial"); 
     var disk = new ManagementObject(@"win32_logicaldisk.deviceid=""c:"""); 
     disk.Get(); 

     string volumeSerial = disk["VolumeSerialNumber"].ToString(); 
     disk.Dispose(); 

     return volumeSerial; 
    } 

    private static string GetCpuId() 
    { 
     Console.WriteLine("GetCpuId"); 
     var managClass = new ManagementClass("win32_processor"); 
     var managCollec = managClass.GetInstances(); 

     foreach (ManagementObject managObj in managCollec) 
     { 
      //Get only the first CPU's ID 
      return managObj.Properties["processorID"].Value.ToString(); 
     } 
     return string.Empty; 
    } 
+0

सबसे पहले, यह नहीं किया जा सकता - एक GUID एक विशेष रूप से गणना की गई यूयूआईडी है, इसलिए स्वयं में GUID शब्द का उपयोग करके आप परिभाषित करते हैं कि यह गणना के विशिष्ट रूपों पर आधारित है। – TomTom

+0

मैंने इसे "GUID" कहने से बचने के लिए शीर्षक बदल दिया, क्योंकि यह @TomTom नोट्स के रूप में एक विशिष्ट प्रकार की आईडी है। –

+0

ऐसा क्यों नहीं किया जा सकता है? – ivowiblo

उत्तर

8

यह एक सुंदर सभ्य लेख है कि एमएस ने विंडोज एक्सपी के साथ यह कैसे किया। शायद आप जो भी खोज रहे हैं वह ठीक नहीं है, लेकिन यह एक शानदार कूद-बंद बिंदु है।

Windows XP Activation Explained

क्या हार्डवेयर विंडोज की जांच करता है?

  • प्रदर्शन एडाप्टर
  • SCSI एडाप्टर
  • आईडीई एडाप्टर (प्रभावी रूप से मदरबोर्ड)
  • नेटवर्क एडाप्टर (एनआईसी) और उसके मैक पता
  • :

    सिस्टम हार्डवेयर के इन दस श्रेणियों की जांच

  • रैम राशि रेंज (यानी, 0-64 एमबी, 64-128 एमबी, आदि)
  • प्रोसेसर प्रकार
  • प्रोसेसर सीरियल नंबर
  • हार्ड ड्राइव डिवाइस
  • हार्ड ड्राइव वॉल्यूम सीरियल नंबर (VSN)
  • सीडी-रोम/सीडी आरडब्ल्यू/डीवीडी-रोम
+0

यह मुझे वह दिया जो मैं खोज रहा था। चीजों की एक ठोस सूची जो मैं उपयोग कर सकता हूं। मैं उन वस्तुओं को लेने जा रहा हूं जो आमतौर पर किसी दिए गए दिन में नहीं बदलेगा। धन्यवाद! – ErocM

+0

कोई समस्या नहीं है। मैं खुश हूं कि मैं मदद कर सका। बीटीडब्ल्यू - मैं जिस चीज पर काम कर रहा हूं उसके लिए मैं एक ही मुद्दे को देख रहा था। अन्य टिप्पणियों और उत्तरों को पढ़ने के बाद, मुझे विश्वास है कि मैं एनआईसी मैक पते को "छोड़ दूंगा"। एडवर्ड और शॉन दोनों ने उस क्षेत्र में ऋषि सलाह की पेशकश की। –

12

नहीं वास्तव में एक जवाब है, लेकिन एक शब्द सावधानी बरतें मैंने एक सॉफ्टवेयर कंपनी के लिए काम किया जिसने एक समान प्रकार की लाइसेंसिंग तंत्र की और यह ... भंगुर था। लैपटॉप पर विशेष रूप से। पर विचार करें:

  1. जब एक लैपटॉप पर वायर्ड और वायरलेस के बीच स्विच, आप प्रत्येक इंटरफेस पर एक अलग मैक पता होगा।

  2. आपके मैक पते को बदलने के फायदे हो सकते हैं। उदाहरण के लिए, राज्यों में कुछ केबल इंटरनेट प्रदाता मूर्खतापूर्वक आपके मैक पते को आपके खाते में जोड़ते हैं और किसी को अपने कंप्यूटर को सीधे केबल मॉडेम में प्लग करने की आवश्यकता हो सकती है और फिर उनके राउटर के मरने पर उनके राउटर के मैक को क्लोन करना पड़ सकता है।

  3. यदि कोई उपयोगकर्ता एक अलग हार्ड ड्राइव से बूट करना था (उदाहरण के लिए, एक फ्लैश ड्राइव या यूएसबी स्टिक), तो क्या यह पहली ड्राइव के रूप में रिपोर्ट की गई बदलेगी?

और यह कमोडिटी वर्चुअलाइजेशन के दिनों से बहुत पहले था। अब मान लें कि आप एक सेटिंग स्विच कर सकते हैं और अपने वीएम को रीबूट कर सकते हैं और: एक अलग मात्रा में रैम, एक अलग आकार की हार्ड ड्राइव, एक अलग प्रकार का आभासी हार्ड ड्राइव नियंत्रक प्रकार (आईडीई, एससीएसआई, शायद एकाधिक एससीएसआई नियंत्रक इंटरफेस)। और आप सीडी/डीवीडी डिवाइस को हॉट-स्वैप कर सकते हैं और माउस क्लिक के साथ एनआईसी सेटिंग्स बदल सकते हैं।

इसलिए मैं यह नहीं कह रहा हूँ "ऐसा नहीं करते हैं इस", वास्तव में, लेकिन मैं आप के रूप में आप कर सकते हैं के रूप में कई के वातावरण में के रूप में कई मशीनों पर इस तंत्र का परीक्षण करने के लिए प्रोत्साहित करेंगे, और मैं आगे कहा कि सुझाव देगा आपके उपयोगकर्ताओं के पास बहुत कम धैर्य होगा जब वे उस सॉफ़्टवेयर को नहीं चला सकते जिसके लिए उन्होंने भुगतान किया है।

क्या आपने हार्डवेयर डोंगल को माना है?

+0

मैंने इसे मुद्रित किया और प्रोग्रामर के साथ इसकी चर्चा की और मेरे मालिक हमें यह देखना चाहते हैं कि मैं उन वस्तुओं के साथ क्या कर सकता हूं जो आम तौर पर परिवर्तित नहीं होते हैं। मैं केवल एक के लिए वोट दे सकता हूं लेकिन मैंने आपको एक अच्छे उत्तर और चीजों को नजर रखने के लिए एक निशान दिया है। – ErocM

9

मुझे पता चला है कि मैक पता आजकल जांचने लायक नहीं है। प्रत्येक कंप्यूटर में एक से अधिक नेटवर्क एडेप्टर होते हैं, उनमें से कोई भी बाहरी डिवाइस हो सकता है जो किसी भी समय मौजूद हो या न हो। हमने एक ऐसी प्रणाली शुरू की जिसने साल पहले मैक पते पर बहुत अधिक ध्यान दिया था, और यह एक ग्राहक सेवा आपदा होने के समाप्त हो गया।

दूसरी ओर, यह आपके सीपीयू, मदरबोर्ड, बस/डिस्क नियंत्रकों, या मुख्य हार्ड ड्राइव को स्वैप करने के लिए अपेक्षाकृत दुर्लभ है।

+0

मैक पते पर महान टिप्पणी। मैं पूरी तरह से सहमत। मेरे लेटॉप के लिए मेरे पास एक हटाने योग्य नेटवर्क एडेप्टर है और यह ठीक से टूट गया है। मैं सीपीयू सीरियल नंबर और हार्ड ड्राइव सीरियल (सी ड्राइव के आधार पर) का उपयोग कर रहा हूं। जब मैंने मदरबोर्ड सीरियल प्राप्त करने की कोशिश की, तो मैंने परीक्षण किए गए आधा कंप्यूटरों पर, मुझे रिक्त स्थान मिल गया। क्या तुम्हारे साथ ऐसा ही हुआ? – ErocM

+0

सीपीयू, मदरबोर्ड, बस/डिस्क नियंत्रक इत्यादि ... ये धारावाहिक संख्या या तो समान या खाली हैं ... किसी और को एक ही समस्या का सामना करना पड़ा? –

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