2019 उत्तर (विंडोज के लिए):
यदि आप एक स्थायी UUID चाहते हैं जो किसी मशीन को Windows पर विशिष्ट रूप से पहचानती है, तो आप इस ट्रिक का उपयोग कर सकते हैं: ( https://stackoverflow.com/a/58416992/8874388 पर मेरे उत्तर से कॉपी किया गया )।
from typing import Optional
import re
import subprocess
import uuid
def get_windows_uuid() -> Optional[uuid.UUID]:
try:
# Ask Windows for the device's permanent UUID. Throws if command missing/fails.
txt = subprocess.check_output("wmic csproduct get uuid").decode()
# Attempt to extract the UUID from the command's result.
match = re.search(r"\bUUID\b[\s\r\n]+([^\s\r\n]+)", txt)
if match is not None:
txt = match.group(1)
if txt is not None:
# Remove the surrounding whitespace (newlines, space, etc)
# and useless dashes etc, by only keeping hex (0-9 A-F) chars.
txt = re.sub(r"[^0-9A-Fa-f]+", "", txt)
# Ensure we have exactly 32 characters (16 bytes).
if len(txt) == 32:
return uuid.UUID(txt)
except:
pass # Silence subprocess exception.
return None
print(get_windows_uuid())
कंप्यूटर के स्थायी UUID को प्राप्त करने के लिए Windows API का उपयोग करता है, फिर यह सुनिश्चित करने के लिए स्ट्रिंग को संसाधित करता है कि यह एक मान्य UUID है, और अंत में एक Python ऑब्जेक्ट ( https://docs.python.org/3/library/uuid.html ) देता है जो आपको सुविधाजनक बनाता है डेटा का उपयोग करने के तरीके (जैसे 128-बिट पूर्णांक, हेक्स स्ट्रिंग, आदि)।
सौभाग्य!
पुनश्च: उपप्रकार कॉल को शायद विंडोज कर्नेल / डीएलएल को सीधे कॉल करने वाले ctypes से बदला जा सकता है। लेकिन मेरे उद्देश्यों के लिए यह फ़ंक्शन मेरी ज़रूरत है। यह मजबूत सत्यापन करता है और सही परिणाम पैदा करता है।