ค้นหา GUID ที่ไม่ซ้ำกันเพื่อระบุการติดตั้ง Windows


15

ฉันกำลังมองหา GUID ที่ไม่เหมือนใครซึ่งจัดเก็บไว้ในรีจิสทรีของ Windows ที่จะช่วยฉันระบุการติดตั้ง Windows หรือพีซี

GUID จะต้อง;

  • มีอยู่เสมอ
  • ไม่ซ้ำกับการติดตั้ง Windows เฉพาะเช่นไม่มีคอมพิวเตอร์เครื่องอื่นจะมี ID เดียวกัน
  • ไม่เคยเปลี่ยน

ขอบคุณมาก


ทำไมโพสต์บน SF และ SU superuser.com/questions/82484/…
MDMarra

คำตอบ:


8

คุณสามารถรับ GUID ได้จากการลงทะเบียน windows ตัวอย่างเช่น:

var regpath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography\\MachineGuid";
var oWSS = new ActiveXObject("WScript.Shell");
clientGUID = oWSS.RegRead(regpath);

เป็นรหัสของคุณใน C # หรือภาษาการเขียนโปรแกรมอื่น ๆ ?
ทิม

มันเป็น JavaScript ที่ฉันใช้ใน windows 7 gadget
ขนาดย่อ

1
C # และ Javascript มีไวยากรณ์คล้ายกันมากหรือไม่
Tim

ขออภัยไม่สามารถบอกคุณได้ฉันไม่คุ้นเคยกับ C # รหัสเหล่านี้เป็นเพียง 3 บรรทัดของรหัสอย่างง่ายประกอบด้วยข้อกำหนดตัวแปรตัวอักษรสตริงการสร้างวัตถุใหม่และใช้เครื่องหมายจุดเพื่อเข้าถึงวิธีการของวัตถุ อาจมีโครงสร้างรหัสอื่นมากมายที่จะเปรียบเทียบภาษาด้วย
ทอดตัว

@ เวลาฉันคิดว่าคุณสนใจอ่านคีย์รีจิสตรีใน C # ถ้าเป็นเช่นนั้นบางทีคำถาม SOนี้อาจเป็นประโยชน์สำหรับคุณ
ขนาดย่อ

7

คุณคาดหวังว่าหมายเลขนี้จะเปลี่ยนแปลงหรือยังคงเหมือนเดิมหากไดรฟ์สำหรับการติดตั้งนั้นถูกย้ายไปยังระบบอื่นหรือไม่?

คุณคาดว่าจะมีการเปลี่ยนแปลงหมายเลขนี้หรือไม่หากการติดตั้งถูกโคลนด้วย ghost หรืออย่างอื่น? คุณสามารถพึ่งพาระบบที่ถูกโคลนได้ตลอดเวลาที่ทำหน้าที่เป็นคำแนะนำของ Microsoft หรือไม่ SID ควรใช้ได้ถ้าคุณมั่นใจได้ว่าการติดตั้งของคุณจะไม่ลอกแบบ

ในกรณีของระบบมัลติบูต (เช่นระบบมีการติดตั้ง Windows 7 และ Windows XP) คุณจำเป็นต้องระบุการติดตั้งสองแบบว่าไม่ซ้ำกันหรือเกี่ยวข้องหรืออะไร?

ทำไมคุณถึงต้องนี้จะเป็นส่วนหนึ่งของการติดตั้งหน้าต่างและไม่ได้เป็นสิ่งที่นำเสนอโดยฮาร์ดแวร์อาจจะเป็นหมายเลขประจำตัวประมวลผล ?

ฉันสมมติว่าคุณกำลังถามเกี่ยวกับเรื่องนี้สำหรับสคริปต์หรือเครื่องมือบางประเภทที่คุณใช้เพื่อวัตถุประสงค์ด้านสินค้าคงคลัง?

ทำไมคุณไม่สร้างหมายเลขของคุณเองในครั้งแรกที่คุณเรียกใช้เครื่องมือและบันทึกไว้ในกลุ่มรีจิสทรี LOCAL_MACHINE บางทีอาจใช้หมายเลข RFC4122 Type 1 และควรรวมที่อยู่ฮาร์ดแวร์สำหรับหนึ่งในอินเตอร์เฟสเครือข่าย ด้วยวิธีนี้คุณสามารถตรวจสอบเพื่อดูว่า UUID ยังคงเป็นของระบบนั้นหรือไม่โดยการเปรียบเทียบ UUID กับอะแดปเตอร์เครือข่ายปัจจุบัน


2

คุณต้องการใช้รหัสผลิตภัณฑ์ Windows นี่เป็นหมายเลขเฉพาะที่สร้างขึ้น (แฮช) บางส่วนจากหมายเลขผลิตภัณฑ์ที่ติดตั้งและบางส่วนจากการกำหนดค่าฮาร์ดแวร์รวมถึงหมายเลขซีเรียลโปรเซสเซอร์และที่อยู่ MAC จาก NIC แรก คุณสามารถอ่านเกี่ยวกับเรื่องนี้ในบทความ TechNet (ค่อนข้างเก่าแต่ยังใช้ได้) รหัสผลิตภัณฑ์สามารถพบได้บนหน้าจอข้อมูลระบบหรือโดยทางโปรแกรมผ่านวิธีการต่างๆ

ข้อมูลระบบ


รีจิสตรีที่มีลิขสิทธิ์ผู้ใช้งานหน้าต่างอยู่ที่: NT \ CurrentVersion HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows HKEY_LOCAL_MACHINE ไม่มีซอฟต์แวร์พิเศษที่จำเป็นในการอ่าน
Walter Vehoeven

0

สมมติว่ามันเซิร์ฟเวอร์ Windows มีบทความฐานความรู้ที่พูดคุยเกี่ยวกับวิธีการที่จะได้รับมันออกมาจาก Win2k: KB224544

ฉันไม่ทราบว่า LDP.exe ยังคงทำงานเช่นนั้น แต่อาจ


บทความนั้นใช้กับตัวควบคุมโดเมนเท่านั้น
MDMarra

ขอบคุณสำหรับข้อมูลฉันกำลังมองหา GUID ที่จะมีอยู่ใน Windows ทุกรุ่น XP และสูงกว่า
user28967

0

ฉันไม่แน่ใจว่าค่า GUID เช่นเดียวกับที่คุณอธิบายมีอยู่จริง วิธีปฏิบัติทั่วไปคือการใช้ข้อมูล CPU หรือรหัสเมนบอร์ด

นี่คือลิงค์ไปยังโพสต์ในฟอรัมที่มีโค้ดสคริปต์ WMI ที่เกี่ยวข้องบางส่วน: http://www.devnewsgroups.net/group/microsoft.public.dotnet.framework/topic59274.aspx


0

หากคุณต้องการระบุการติดตั้ง Windows แสดงว่าคุณอาจโชคไม่ดี ในสภาพแวดล้อมขององค์กรเวิร์คสเตชั่มักจะถ่ายภาพแทนที่ติดตั้ง คอมพิวเตอร์แต่ละเครื่องที่สร้างจากภาพนี้จะเหมือนกัน

สิ่งที่ใกล้เคียงที่สุดกับสิ่งที่คุณอธิบายไว้คือ SID ของเครื่อง แต่สิ่งนี้ไม่ทำงานด้วยเหตุผลสองประการ:

  1. เครื่อง Windows XP ที่ถ่ายภาพมี SID เดียวกันยกเว้นว่าคุณเรียกใช้ NewSID กับเครื่องที่หลายคนไม่มี
  2. ตัวควบคุมโดเมนทั้งหมดในโดเมนเดียวใช้ SID เครื่องเดียวกัน

คุณต้องการตัวระบุนี้เพื่ออะไร ทางออกที่ดีที่สุดของคุณอาจเป็นการสร้างของคุณเองถ้าเป็นไปได้


1
หากเครื่องเป็น syspreps หลังจากถ่ายภาพ SID จะแตกต่างกัน หากพวกเขาไม่ได้ (ซึ่งทั้งหมดพวกเขามักจะไม่) SIDs จะเหมือนกัน
mrdenny

0

คุณสามารถลองใช้ที่อยู่ MAC ซึ่งอย่างน้อยก็มีจุดประสงค์ที่จะเป็นที่ไม่ซ้ำกันและถาวรทั่วโลก สิ่งนี้จะมีข้อได้เปรียบที่ดีที่คุณสามารถรับ IP และชื่อโฮสต์ของเครื่องโดยไม่ต้องกังวลมากเกินไป ไม่ตรงกับความต้องการของคุณในการลงทะเบียนสตรีม แต่คุณสามารถใช้ WMI แทนได้

ตัวอย่างสคริปต์ที่นี่: http://www.winforums.com/showthread.php?t=8842


0

DriveId ของไดรฟ์ข้อมูลระบบเป็นอย่างไร คุณสามารถรับ ID จากWin32_Volumeคลาส WMI โดยค้นหารายการด้วย SystemVolume True

ใน PowerShell:

gwmi win32_volume -filter 'SystemVolume=true' | ft -a DriveLetter,SystemVolume,DeviceId

(แน่นอนสามารถ remoting นี้.)


0

มี SID ที่ใช้โดย Windows Update ซึ่งคุณอาจใช้งานได้ อีกครั้งไม่มีการรับประกันว่ามันจะไม่ซ้ำกันทุกครั้งหรือว่าจะไม่เปลี่ยนแปลง

ฉันคิดว่าสิ่งที่ใกล้เคียงที่สุดที่จะตอบสนองความต้องการของคุณก็คือ MAC address อย่างไรก็ตามการเปลี่ยนแปลงหาก NIC ถูกแทนที่

ทางออกที่ดีที่สุดของคุณคือการเขียน GUID ของคุณเองในรีจิสทรีและใช้มัน


0

เพื่อยืนยันเครื่อง SID บนเครื่องเฉพาะคุณสามารถเรียกใช้ SysInternals PSGETSID% COMPUTERNAME% $ (Domain SID)

http://blogs.msdn.com/aaron_margosis/archive/2009/11/05/machine-sids-and-domain-sids.aspx

แก้ไข: ลบการอ้างอิงถึงเครื่อง SID ในรีจิสทรีซึ่งอาจไม่ซ้ำกัน (หรือถูกต้อง)


โอ้มาเลยถ้าคุณกำลังจะดัดแปลงใครสักคนอย่างน้อยก็แสดงความคิดเห็นและแจ้งให้พวกเขารู้ว่ามีอะไรผิดปกติ
Matt Simmons


@Dennis - ถูกต้อง ดังนั้นหากอยู่ในโดเมน: psgetsid.exe% computername% $ จะสร้างตัวระบุที่ไม่ซ้ำกัน
เกร็กคอน

@Greg: ถ้าคุณสร้างเวิร์คสเตชั่นจากภาพล่ะ หากคุณไม่ได้เรียกใช้ newsid พวกเขาทั้งหมดจะใช้เครื่อง SID เดียวกันร่วมกัน
สตีเฟ่น Jennings

@Stephen - การใช้ Domain SID จะแก้ไขปัญหานั้น blogs.msdn.com/aaron_margosis/archive/2009/11/05/…
Greg Askew

-1

ทำไมไม่ใช้ชื่อคอมพิวเตอร์ล่ะ? มันจะไม่ซ้ำกันภายในโดเมนของคุณการติดตั้ง windows ทั้งหมดมีเพียงหนึ่งอย่างและจะเปลี่ยนแปลงได้ก็ต่อเมื่อผู้ดูแลระบบโดเมนเปลี่ยนแปลงซึ่งไม่จำเป็นต้องแก้ไขเว้นแต่จะมีการแก้ไข


-2

ฉันก็ต้องการเพื่อหาวิธีในการระบุการติดตั้ง Windows ทั่วโลกโดยไม่ซ้ำกัน ประการแรกเพื่อจำแนกและระบุอิมเมจสำรองอย่างเหมาะสมและพิจารณาว่าจะกู้คืนข้อมูลใดบนเครื่องใด ประการที่สองเพื่อตั้งชื่อคู่ sychronization สำหรับการซิงโครไนซ์ไฟล์และเพื่อกำหนดคู่การซิงโครไนซ์ที่จะใช้ขึ้นอยู่กับเครื่องที่เกี่ยวข้องในการซิงโครไนซ์

หลังจากอ่านบทความหลายบทความรวมถึงบทความในเว็บไซต์นี้ฉันสรุปได้ว่าไม่มีวิธีง่ายๆในการค้นหาตัวระบุที่ไม่ซ้ำกันทั่วโลกของการติดตั้ง Windows มันแย่มาก ซอฟต์แวร์ควรมีหมายเลขซีเรียลของตนเองเช่นเดียวกับฮาร์ดแวร์ โอ้ดี! ดังนั้นนี่คือวิธีแก้ปัญหาของฉัน: แทนที่จะค้นหาตัวระบุที่ไม่ซ้ำกันหนึ่งเดียวทั่วโลกฉันได้สร้างคำสั่ง sylized ซึ่งเป็นแรงบันดาลใจในการที่ Microsoft ตั้งชื่อไดรฟ์เครือข่ายบน Windows และวิธีการตั้งชื่อโฟลเดอร์ที่ใช้ร่วมกันในพีซีเสมือน: "[WINDOWS รหัสผลิตภัณฑ์ ( เป็นตัวแปร )] ติดตั้งใน [หมายเลขอนุกรมคอมพิวเตอร์ ( เป็นตัวแปร))]. "ถึงแม้ว่าหมายเลขประจำตัวการผลิตของ Windows จะไม่ซ้ำกันเฉพาะที่หมายเลขผลิตภัณฑ์ที่เกี่ยวข้องเท่านั้น แต่ก็มีแนวโน้มที่จะเหมือนกันในการติดตั้งหลาย ๆ ครั้งโดยเฉพาะอย่างยิ่งในคอมพิวเตอร์ที่ผลิตจำนวนมากที่มี Windows หมายเลขไม่ซ้ำกันและแตกต่างจากเครื่องหนึ่งไปยังอีกเครื่องสูตรดังกล่าวข้างต้นคือทั้งหมดที่ฉันต้องการสำหรับวัตถุประสงค์ของฉันฉันไม่ต้องการ SID (ฉันคิดว่ามันหมายถึงตัวบ่งชี้ความปลอดภัย) หรืออย่างอื่นที่มีความซับซ้อนมากขึ้นเนื่องจากการรวมกันของตัวแปรทั้งสองอ้างอิงถึงการติดตั้ง Windows ที่ฉันต้องระบุในขณะที่ตัวแปรแต่ละตัวเป็นของตนเองโดยไม่มีประโยชน์สำหรับฉัน โดยเฉพาะและประการแรกการระบุผลิตภัณฑ์ Windows นั้นเหมือนกันในคอมพิวเตอร์ที่ผลิตโดยผู้ผลิตรายเดียวกันและพบได้ในสายผลิตภัณฑ์เดียวกันซึ่งไม่ได้มีจุดประสงค์ใดเนื่องจากฉันมีเครื่องที่เหมือนกันหลายเครื่อง ประการที่สองหมายเลขซีเรียลไม่ได้ระบุอย่างเป็นเอกลักษณ์เพียงพอเนื่องจากฉันมีการติดตั้ง Windows หลายเครื่องบนคอมพิวเตอร์เครื่องหนึ่งซึ่งหมายเลขซีเรียลของคอมพิวเตอร์ไม่ได้ระบุ ฉันจึงแนะนำวิธีการของฉัน

นอกจากนี้และก่อนที่คุณจะสอบถามเกี่ยวกับมัน: ฉันเลือกที่จะไม่ยึดวิธีการของฉันกับชื่อคอมพิวเตอร์ ข้อมูลเป็นแบบผู้ใช้ดังนั้นจึงจำเป็นต้องมีการประดิษฐ์ อย่างไรก็ตามหมายเลขประจำตัวผลิตภัณฑ์ของ Windows และหมายเลขซีเรียลของคอมพิวเตอร์ได้รับการระบุประดิษฐ์และเชื่อมต่อกับผลิตภัณฑ์ที่เฉพาะเจาะจงสองรายการอย่างสม่ำเสมอดังนั้นจึงไม่จำเป็นต้องมีสินค้าคงคลังอีกต่อไป ฉันจะไม่เลือกที่จะระบุการติดตั้ง Windows ด้วยตัวระบุเฉพาะของฮาร์ดไดรฟ์เนื่องจากฉันสามารถและสลับการใช้งานจากเครื่องหนึ่งไปยังอีกเครื่องหนึ่งได้โดยเฉพาะอย่างยิ่งเมื่อความจุของไดรฟ์อยู่ในสภาวะคงที่ ในทำนองเดียวกันฉันจะใช้ระบบการระบุชื่อของหน่วยประมวลผลกลางหรือเมนบอร์ดน้อยกว่าที่แนะนำไว้ก่อนหน้านี้ในShoeless. ในที่สุดฉันก็ปฏิเสธตัวเลือกที่ชัดเจนที่สุดในการระบุการติดตั้ง Windows (แม้ว่าจะไม่ได้รับการกล่าวถึงโดยบุคคลอื่นจากสิ่งที่ฉันเห็น): ใช้รหัสผลิตภัณฑ์ แม้ว่ามันจะไม่ซ้ำกันมันเป็นเพียงใบอนุญาตในการติดตั้ง Windows บางรุ่น; ไม่ได้เชื่อมต่อกับการติดตั้ง Windows โดยเฉพาะและไม่ได้แยกความแตกต่างว่าติดตั้งบนเครื่องใดเครื่องหนึ่งแม้ว่าใบอนุญาตจะได้รับจากการซื้อคอมพิวเตอร์ที่กำหนด


3
และคำตอบของคุณสำหรับคำถามคือ ... ?
Deer Hunter
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.