पर हार्डवेयर-आईडी उत्पन्न करना सी ++ के साथ माइक्रोसॉफ्ट विंडोज पर एक अद्वितीय हार्डवेयर आईडी उत्पन्न करने का सबसे अच्छा तरीका क्या है जो आसानी से स्पूफबल नहीं है (उदाहरण के लिए मैक पता बदल रहा है)?विंडोज
विंडोज
उत्तर
विंडोज पर रजिस्ट्री में प्रति मशीन एक अद्वितीय Guid संग्रहीत करता है:
HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\MachineGuid
हार्डवेयर करने के लिए सौंपा विभिन्न आईडी पढ़ सकते हैं और एक मशीन कुंजी के रूप में जोड़ा जा सकता है कर रहे हैं। उदाहरण के लिए, आप हार्ड ड्राइव की आईडी प्राप्त कर सकते हैं जहां सॉफ़्टवेयर संग्रहीत किया जाता है, प्रो आईडी, इत्यादि। इनमें से कुछ को दूसरों की तुलना में अधिक आसानी से सेट किया जा सकता है, लेकिन ताकत का हिस्सा कई टुकड़ों को एक साथ जोड़ना है जो जरूरी नहीं हैं खुद से पर्याप्त मजबूत।
Win32 सिस्टम एचडीएस एपीआई का उपयोग करें। रजिस्ट्री को न पढ़ें, इसका कोई मतलब नहीं है।
एक लिंक साझा करने की तरह? एचडीएस कुछ भी नहीं बदलता है। –
यहाँ एक कार्यक्रम (DLL के रूप में भी उपलब्ध है) कि पढ़ सकते हैं और आपके कंप्यूटर/हार्डवेयर पहचान पत्र दिखाने कर सकते हैं: http://www.soft.tahionic.com/download-hdd_id/index.html
यह सीपीयू सीरियल नंबर लेकिन आज motherboards के कई प्रकार हैं हुआ करता था और यह कारक है सही नहीं है। मैक पते आसानी से जाली जा सकती है। यह हमें आंतरिक हार्ड ड्राइव धारावाहिक संख्या के साथ छोड़ देता है। यह भी देखें: http://www.codeproject.com/Articles/319181/Haephrati-Searching-for-a-reliable-Hardware-ID
कई प्रकार की "चालें" हैं, लेकिन केवल वास्तविक "भौतिक उत्तर" है "नहीं, कोई समाधान नहीं है"।
एक "मशीन" कुछ हार्डवेयर के साथ एक निष्क्रिय बस से अधिक कुछ नहीं है। हालांकि लोहा का प्रत्येक टुकड़ा किसी भी तरह प्रयोग करने योग्य पहचानकर्ता प्रदान कर सकता है, लोहा के प्रत्येक टुकड़े को उपयोगकर्ता द्वारा किसी भी बुरे या अच्छे कारण के लिए प्रतिस्थापित किया जा सकता है, जिसके बारे में आप पूरी तरह से अवगत नहीं हो सकते हैं (इसलिए यदि आप इस पर अपनी कार्यक्षमता का आधार रखते हैं, तो आप समस्याएं पैदा करते हैं आपका उपयोगकर्ता, और इसलिए - एक परिणाम- हर बार जब हार्डवेयर को प्रतिस्थापित/पुन: प्रारंभ/पुन: कॉन्फ़िगर किया गया आदि इत्यादि)।
अब, यदि आपकी समस्या किसी संदर्भ में मशीन की पहचान करती है जहां कई मशीनों को एक साथ इंटर-ऑपरेट करना होता है, तो यह मैक या आईपी पते या होस्टनाम द्वारा अच्छी तरह से खेला जाता है। लेकिन इस विचार के लिए तैयार रहें कि वे लंबे समय तक अनिवार्य रूप से स्थिर नहीं हैं (इसलिए हार्ड-कोड से बचें - इसके बजाय "किसी भी स्टार्ट-अप पर" फिर खोज करें ")
यदि आपकी समस्या -instead- सॉफ़्टवेयर इंस्टेंस या लाइसेंस की पहचान करें, आपके पास किसी अन्य प्रकार के समाधान पर ध्यान केंद्रित करना बेहतर होगा: आप "उपयोगकर्ताओं" को लाइसेंस बेचते हैं (यह वह उपयोगकर्ता है जिसके पास पैसा है, न कि उसका कंप्यूटर!), न कि उनकी "मशीन" (जब भी उन्हें आपकी अनुमति के बिना/जब भी आवश्यकता हो, उपयोगकर्ताओं को बदलने के लिए स्वतंत्र होना चाहिए, क्योंकि आप हार्डवेयर या ओएस लाइसेंस नहीं देते हैं ...), इसलिए आपकी समस्या मशीन की पहचान नहीं करना है, लेकिन एक यूजर (उस पर विचार करें मशीन कई उपयोगकर्ताओं के लिए एक होस्ट हो सकती है और यह कि एक ही उपयोगकर्ता विभिन्न मशीनों पर काम कर सकता है ..., आप 1: 1 संबंध को किसी भी प्रकार की समस्याओं के बिना जल्दी या बाद में नहीं चला सकते हैं, जब यह मुहावरे ifs अब और फिट नहीं मिला)।
विचार उपयोगकर्ताओं को कुछ हद तक पहुंचने योग्य साइट में पंजीकृत करना चाहिए, उन्हें उत्पन्न करने वाली चाबियां दें, और जांचें कि एक ही उपयोगकर्ता/कुंजी जोड़ी किसी अस्थायी रूप से किसी निर्दिष्ट समय के तहत सहमत नहीं है अवधि। जब उल्लंघनों से अधिक हो जाता है, या चाबियाँ पुरानी हो जाती हैं, तो बस ब्लॉक करें और उपयोगकर्ता को नवीनीकृत करने की प्रतीक्षा करें।
जैसा कि आप देख सकते हैं, उत्तर ज्यादातर प्रश्न से अधिक आपके प्रश्न के पीछे कारण पर निर्भर करता है।
परिभाषित करें "आसानी से धोखा देने योग्य" - यानी आपकी दादी इसे कर सकती हैं, केवल हैकर अभिजात वर्ग, या कोई भी नहीं? – GalacticCowboy