2010-08-09 12 views
35

मैं this tutorial में कोड देख रहा हूं, और मुझे लगता है कि यह उन सेटिंग्स को सहेजने के लिए My.Computer.Name का उपयोग करता है जो कंप्यूटर के बीच घूमना नहीं चाहिए। हालांकि, उपयोगकर्ता के लिए दो समान नामित पीसी होने के लिए यह पूरी तरह से संभव है। यदि वे प्रत्येक पीसी पर एक ही उपयोगकर्ता नाम चाहते थे, उदाहरण के लिए, वे उपयोगकर्ता नाम-पीसी नामक दो पीसी के साथ बहुत अच्छी तरह समाप्त हो सकते हैं।एक अच्छा अद्वितीय पीसी पहचानकर्ता क्या है?

विभिन्न पीसी की पहचान करने के कुछ अच्छे तरीके क्या हैं? क्या पीसी के पास उनके साथ जुड़े GUID हैं, या क्या मुझे कुछ हार्डवेयर के सीरियल नंबर को खींचने में देखना चाहिए? मुझे परवाह नहीं है कि पहचान विंडोज के पुनर्स्थापना के माध्यम से बनी रहती है या नहीं।

(ट्यूटोरियल मैं जुड़ा हुआ VB.Net में है, लेकिन मैं सी # में लागू कर रहा हूँ)

+0

http://stackoverflow.com/questions/671876/whats-a-good-way-to-uniquely-identify-a-computer –

+0

http://stackoverflow.com/questions/99880/generating-a-unique -माचिन-आईडी –

उत्तर

35

कुछ अच्छी पहचानकर्ता:

  • MAC पता: यह कम से प्राप्त करने के लिए काफी आसान है, और यह आमतौर पर अद्वितीय है। हालांकि, इसे आसानी से खराब/बदला जा सकता है, इसलिए यह इस बात पर निर्भर करता है कि इसे कितना अद्वितीय होना चाहिए।
  • सीपीयू सीरियल नंबर: यह कई पुराने सिस्टम पर उपलब्ध नहीं है, लेकिन यह वहां है। this MSDN page देखें। यह नहीं बदलेगा, लेकिन यह एक कंप्यूटर से जुड़ा हुआ है।
  • एचडीडी सीरियल नंबर: यह बदलने की संभावना नहीं है, लेकिन अगर एचडी विफल रहता है तो एक उपद्रव हो सकता है। this MSDN page देखें।
+2

+1 हाँ, मैक से सावधान रहें। मैक बदलने और डुप्लीकेट होने से पहले मुझे समस्याओं का एक टन था। अरबी रोटी। –

+0

सावधान: मैंने ऐसे मामलों को देखा है जहां सीपीयू (लैपटॉप का) टोस्ट किया गया था और उन्हें प्रतिस्थापित किया जाना था। नया सीपीयू, नया सीपीयूआईडी। –

+1

@ स्टेवन: अच्छा बिंदु। आम तौर पर, हालांकि, मैं इसे सिस्टम पर "सबसे विश्वसनीय" आईडी में से एक मानता हूं। सीपीयू विफलता अपेक्षाकृत असामान्य है (एचडी विफलता की तुलना में)। यह भी ध्यान दिया जाना चाहिए कि जब आप वर्चुअलाइजेशन से निपटना शुरू करते हैं तो यह संख्या गड़बड़ हो सकती है। – mattbasta

0

मैं इसे दो पीसी के लिए एक ही डोमेन पर ही नाम के साथ संभव है नहीं लगता। क्या आपने डोमेन नाम कैप्चर करने का प्रयास किया है?

+1

मेरे पास एक ही डोमेन पर एक ही डोमेन पर 2 पीसी हैं :-) मैं xp के बीच दोहरी बूट और 7 जीतता हूं ... हालांकि xp fr में 2 सप्ताह से अधिक नहीं बूट किया गया है – SQLMenace

+0

@SQLMenace: जब तक कि उसके पास न हो एक ही एसआईडी, नेटवर्क अभी भी उन्हें विभिन्न बक्से के रूप में देखता है। –

+0

यह वही बॉक्स है..मुझे इसे – SQLMenace

0

यहाँ एक नज़र डालें: Getting Service Tag from Dell Machine using .net?

आप रजिस्ट्री से कुछ अद्वितीय डेटा छीन सकता है।

+0

दोनों डोमेन से बनाने के लिए कुछ फैंसी सामान करना था और जब रजिस्ट्री बदलती है ... –

+0

स्टीवन, ये विशिष्ट मान हार्डवेयर विशिष्ट हैं। – JonH

+1

हार्डवेयर परिवर्तन। डिस्क ड्राइव, सीपीयू, यह सब। जब यह टूट जाता है, तो इसे बदल दिया जाता है। –

1

प्रत्येक कंप्यूटर में एक एसआईडी है जो सामान्य परिस्थितियों में अद्वितीय है।

+3

यह स्वीकार्य उत्तर क्यों है? यह एसआईडी क्या है और इसे कैसे प्राप्त किया जाए? – Marek

+2

और यह भी सही नहीं है। कृपया इस उत्तर से चिह्न हटा दें। एसआईडी (सुरक्षा पहचानकर्ता) एक पहचानकर्ता उत्पन्न होता है जब आप विंडोज़ स्थापित करते हैं। यह बहुत ही असंभव है कि दो कंप्यूटरों में एक ही एसआईडी होगा। एसआईडी मूल रूप से नेटवर्क पर अद्वितीय रूप से उपयोगकर्ताओं की पहचान करने के लिए डिज़ाइन किया गया था। यह पर्याप्त क्यों नहीं है? क्योंकि अगर कंप्यूटर स्क्रैच से स्थापित नहीं किया गया था, लेकिन एक छवि से स्थापित किया गया था, तो उसके पास मूल कंप्यूटर का एक ही एसआईडी होगा। कंप्यूटर स्थापित करने के लिए यह तरीका बड़े नेटवर्क में बहुत आम है, क्योंकि एसआईडी अभ्यास में एक खराब विकल्प है। – DiGMi

+0

@ डीजीजीएम, आप क्लोनिंग के बारे में सही हैं जिसके परिणामस्वरूप एक ही एसआईडी है। यही कारण है कि मैंने "सामान्य परिस्थितियों में" कहा। जैसा कि आपने अपनी प्रतिक्रिया में उल्लेख किया है, क्लोन छवियों को स्थापित करने वाली कुछ कंपनियां एसआईडी को पुन: उत्पन्न करती हैं। –

1

एक चीज जिसका आप उपयोग कर सकते हैं वह किसी भी नेटवर्क इंटरफ़ेस का मैक है। आप जानकारी के कई स्रोतों को भी जोड़ सकते हैं। एचडीडी सीरियल नंबर की तरह, मैक, प्रोसेसर प्रकार से हैश की गणना करने के लिए।

+2

आपके द्वारा उपयोग किए जाने वाले अधिक स्रोत, अधिक विश्वसनीय हैं। हालांकि, जितने अधिक स्रोत आप उपयोग करते हैं, उतना ही कमजोर आप झूठी सकारात्मक हैं। –

14

यदि आप विंडोज HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion\ProductId पर हैं प्रति मशीन/प्रति विंडोज़ इंस्टॉल अद्वितीय है। जहां मैक पते जैसे कुछ अन्य उत्तरों में, प्रो एसएन, और एचडी एसएन विंडोज़ पुनर्स्थापना/दोहरी बूट परिस्थितियों के बीच समान रहेगा।

+1

क्या यह एक अलग मशीन पर स्थापित होने पर यह पता लगाने के लिए विंडोज़ द्वारा उपयोग की जाने वाली संख्या है? –

+0

@ स्टेवन सूडिट, हां, मेरा मानना ​​है कि यह संख्या एचडब्लू सूचना, खिड़कियों के कई टुकड़ों के हैश द्वारा उत्पन्न की गई है सीरियल कुंजी और टाइमस्टैम्प। जब आप विंडोज सक्रिय करते हैं तो वे सीरियल कुंजी और यह कोड भेजते हैं और कोड को अपने सर्वर पर संग्रहीत करते हैं। –

+0

यहां एक विकी पेज है जो अबू टी कैसे उत्पन्न होते हैं http://wiki.lunarsoft.net/wiki/Product_IDs –

2

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

कुछ नमूना कोड यह करने के लिए:

public string GetMACAddress() { 
    ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"); 
    ManagementObjectCollection moc = mc.GetInstances(); 

    string MACAddress = String.Empty; 

    foreach (ManagementObject mo in moc) { 
     if (MACAddress == String.Empty) { // only return MAC Address from first card 
      if ((bool)mo["IPEnabled"] == true) MACAddress = mo["MacAddress"].ToString(); 
     } 
     mo.Dispose(); 
    } 

    return MACAddress; 
} 
10

उस प्रश्न का असली जवाब: जैसी कोई चीज नहीं है।

कई "करीबी पर्याप्त" समाधान हैं, लेकिन उनमें से प्रत्येक की अपनी सीमा है।

सभी हार्डवेयर आईडी - हार्डवेयर परिवर्तन। और, कई मामलों में आप उन पहचानकर्ताओं को बदल सकते हैं (उदाहरण के लिए, मैक स्पूफिंग)।

एसआईडी, जैसा कि मैंने पहले से ही टिप्पणी की है, क्या यह भी अच्छा नहीं है, क्योंकि कंप्यूटर किसी छवि से कंप्यूटर स्थापित होने पर एसआईडी नहीं बदलेगा।विंडोज़ इंस्टॉलेशन द्वारा एसआईडी उत्पन्न होता है, अगर विंडोज़ स्थापित नहीं किया गया था, लेकिन एक छवि से कॉपी किया गया था, तो एसआईडी नहीं बदलेगा (हालांकि myth about "security risk" की वजह से इसे पुन: उत्पन्न करना आम है - आप उस पर भरोसा नहीं कर सकते हैं)।

कंप्यूटर का नाम - ठीक है, जैसा कि बताया गया है, वे अद्वितीय होने का मानते हैं, लेकिन यह किसी भी तरह से लागू नहीं है।

एक और समाधान जिसे आप कार्यान्वित कर सकते हैं वह है कि आप अपने अद्वितीय पहचानकर्ता उत्पन्न करें और इसे स्थानीय रूप से स्टोर करें (मान लें कि आप ऐसी चीज कर सकते हैं)। दोबारा, यह समाधान काम नहीं करेगा यदि आपके कंप्यूटर को आपके आवेदन के साथ इमेज किया गया था।

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

9

यहां कंप्यूटर की विशिष्ट पहचान करने का एक तरीका है। सिस्टम का उपयोग करना। Win32_BIOS प्राप्त करने के लिए प्रबंधन, आप अपने मशीन के BIOS से अद्वितीय मान प्राप्त कर सकते हैं।

देखें: Win32_BIOS वर्ग, http://msdn.microsoft.com/en-us/library/aa394077.aspx

using System.Management; 

string UniqueMachineId() 
{ 
    StringBuilder builder = new StringBuilder(); 

    String query = "SELECT * FROM Win32_BIOS"; 
    ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); 
    // This should only find one 
    foreach (ManagementObject item in searcher.Get()) 
    { 
     Object obj = item["Manufacturer"]; 
     builder.Append(Convert.ToString(obj)); 
     builder.Append(':'); 
     obj = item["SerialNumber"]; 
     builder.Append(Convert.ToString(obj)); 
    } 

return builder.ToString(); 
} 
समान तर्क, आप भी "Win32_DiskDrive" के माध्यम से कदम कर सकते हैं

; http://msdn.microsoft.com/en-us/library/aa394132.aspx; और प्रत्येक भौतिक ड्राइव के लिए "SerialNumber" प्राप्त करें। इस मामले में,

foreach (ManagementObject item in searcher.Get()) 

कई

+2

बायोस सीरियल नंबर का उपयोग करना काफी असुरक्षित है क्योंकि आपको इनमें से बहुत से (समान!) तार मिल सकते हैं: "ओ.ई.एम. द्वारा भरने के लिए"। – movAX13h

0

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

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