Tìm kiếm một GUID duy nhất để xác định cài đặt Windows


14

Tôi đang tìm kiếm một GUID duy nhất được lưu trữ trong sổ đăng ký Windows để giúp tôi xác định cài đặt Windows hoặc PC.

GUID phải;

  • Luôn tồn tại
  • Là duy nhất cho một cài đặt Windows cụ thể, tức là không có máy tính nào khác có cùng ID
  • Không bao giờ thay đổi

Cảm ơn nhiều


Tại sao đăng bài trên SF và SU? superuser.com/questions/82484/
Mạnh

Câu trả lời:


7

Bạn có mong đợi con số này thay đổi hoặc giữ nguyên nếu ổ đĩa cho cài đặt đó được chuyển sang hệ thống khác không?

Bạn có mong đợi con số này sẽ được thay đổi nếu cài đặt được nhân bản với ghost hoặc cái gì khác không? Bạn có thể phụ thuộc vào các hệ thống nhân bản luôn được sysprep'd theo khuyến nghị của Microsoft không? SID sẽ ổn, nếu bạn có thể chắc chắn rằng bản cài đặt của bạn không bao giờ được sao chép.

Trong trường hợp hệ thống đa khởi động (tức là hệ thống có Windows 7 và cài đặt Windows XP), bạn có cần xác định hai cài đặt là duy nhất, hoặc có liên quan hay không?

Tại sao bạn cần đây là một phần của cài đặt windows chứ không phải phần cứng được trình bày bởi phần cứng, có lẽ là số sê-ri của bộ xử lý ?

Tôi giả sử bạn đang hỏi về điều này cho một số loại kịch bản hoặc công cụ bạn đang sử dụng cho mục đích kiểm kê?

Tại sao bạn không đơn giản tạo số của riêng mình vào lần đầu tiên bạn chạy công cụ và lưu nó trong tổ hợp đăng ký LOCAL_MACHINE? Thậm chí có thể sử dụng số RFC4122 Loại 1 và bao gồm địa chỉ phần cứng cho một trong các giao diện mạng. Bằng cách đó, bạn có thể kiểm tra xem UUID có còn thuộc hệ thống đó hay không bằng cách so sánh UUID với các bộ điều hợp mạng hiện tại.


7

Bạn có thể lấy GUID từ sổ đăng ký, ví dụ:

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

mã của bạn trong C # hoặc một số ngôn ngữ lập trình khác?
Tim

Đó là JavaScript tôi đã sử dụng trong tiện ích windows 7.
Friednail 30/03/2017

1
Do C # và Javascript có cú pháp rất giống nhau?
Tim

Xin lỗi, không thể nói với bạn, tôi không quen thuộc với C #. Đây chỉ là 3 dòng của một mã đơn giản, chúng chứa định nghĩa biến, chuỗi ký tự, tạo đối tượng mới và sử dụng ký hiệu dấu chấm để truy cập phương thức của đối tượng. Có lẽ có hàng tấn cấu trúc mã khác để so sánh các ngôn ngữ.
Friednail

@Tim, tôi đoán bạn thích đọc khóa đăng ký trong C #? Nếu vậy, có lẽ câu hỏi SO này sẽ hữu ích cho bạn
Friednail

2

Bạn muốn sử dụng ID sản phẩm Windows. Đây là một số duy nhất được tạo (băm) một phần từ khóa sản phẩm được cài đặt và một phần từ cấu hình phần cứng, bao gồm số sê-ri bộ xử lý và địa chỉ MAC từ NIC đầu tiên. Bạn có thể đọc về nó trên bài viết này (có phần ngày, nhưng vẫn hợp lệ) bài viết TechNet . ID sản phẩm có thể được tìm thấy trên màn hình Thông tin hệ thống hoặc lập trình thông qua một số phương pháp.

Thông tin hệ thống


Sổ đăng ký giữ giấy phép cửa sổ người dùng được đặt tại: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, không có thủ thuật đặc biệt nào cần thiết để đọc nó
Walter Vehoeven

0

Giả sử đó là một máy chủ Windows, có một bài viết cơ sở kiến ​​thức nói về cách lấy nó ra khỏi Win2k: KB224544 .

Tôi không biết nếu LDP.exe vẫn hoạt động như vậy, nhưng nó có thể.


Bài viết đó chỉ áp dụng cho Bộ kiểm soát miền.
MDMarra

Cảm ơn bạn đã cung cấp thông tin, tôi đang tìm kiếm một GUID tồn tại trên tất cả các phiên bản Windows, XP trở lên
user28967


0

Nếu bạn đang tìm cách xác định cài đặt Windows, thì bạn có thể không gặp may. Trong môi trường công ty, các máy trạm thường được tạo hình thay vì cài đặt. Mỗi máy tính được xây dựng từ hình ảnh này sẽ giống hệt nhau.

Điều gần nhất với những gì bạn đã mô tả là SID của máy, tuy nhiên điều này không hoạt động vì hai lý do:

  1. Các máy Windows XP được tạo ảnh có cùng SID trừ khi bạn chạy NewSID với chúng, điều mà nhiều người không làm được.
  2. Tất cả các bộ điều khiển miền trên một tên miền đều có chung SID máy.

Bạn cần định danh này để làm gì? Đặt cược tốt nhất của bạn có thể là để tạo ra của riêng bạn, nếu điều đó là có thể.


1
Nếu các máy bị syspreps sau khi chụp ảnh thì SID sẽ khác. Nếu họ không (mà thường thì họ không), SID sẽ giống nhau.
mrdenny

0

Bạn có thể thử địa chỉ MAC, ít nhất là dự định là duy nhất và vĩnh viễn trên toàn cầu. Điều này cũng có một lợi thế tốt là bạn có thể có được IP và tên máy chủ của máy mà không quá bận tâm (và nó cũng không bị hạn chế đối với Windows). Nó sẽ không đáp ứng yêu cầu của bạn trong sổ đăng ký, nhưng bạn có thể sử dụng WMI cho nó.

Các tập lệnh mẫu tại đây: http://www.winforums.com/showthread.php?t=8842


0

Làm thế nào về DriveId của khối lượng hệ thống? Bạn có thể lấy id từ Win32_Volumelớp WMI, bằng cách tìm kiếm các mục với SystemVolume True.

Trong PowerShell:

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

(Điều này tất nhiên có thể được từ xa.)


0

Có một SID được sử dụng bởi Windows Update mà bạn có thể sử dụng. Một lần nữa, không có gì đảm bảo rằng nó sẽ là duy nhất mỗi lần, hoặc nó sẽ không thay đổi.

Tôi nghĩ rằng thứ gần nhất để đáp ứng nhu cầu của bạn sẽ là địa chỉ MAC, tuy nhiên điều đó có thể thay đổi nếu thay thế NIC.

Đặt cược tốt nhất của bạn sẽ là viết GUID của riêng bạn vào sổ đăng ký và sử dụng nó.


0

Để xác nhận SID máy trên một máy cụ thể, bạn có thể chạy SysIternals PSGETSID% COMPUTERNAME% $. (Tên miền SID).

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

EDIT: Đã xóa tham chiếu đến SID máy trong sổ đăng ký, có thể không phải là duy nhất (hoặc thậm chí chính xác).


Thôi nào, nếu bạn định sửa đổi ai đó, ít nhất hãy để lại nhận xét và cho họ biết điều gì sai.
Matt Simmons


@Dennis - đúng rồi. Vì vậy, nếu đó là trên một tên miền: psgetsid.exe% computername% $ sẽ tạo ra một mã định danh duy nhất.
Greg Askew

@Greg: Điều gì sẽ xảy ra nếu bạn xây dựng máy trạm của mình từ hình ảnh? Nếu bạn không chạy newsid, tất cả họ sẽ chia sẻ cùng một máy SID.
Stephen Jennings

@Stephen - Sử dụng Tên miền SID sẽ giải quyết vấn đề đó. blog.msdn.com/aaron_margosis/archive/2009/11/05/ từ
Greg Askew

-1

Tại sao không chỉ sử dụng tên máy tính? Nó sẽ là duy nhất trong miền của bạn, tất cả các cài đặt windows đều có một và sẽ chỉ thay đổi nếu quản trị viên tên miền thay đổi nó không bao giờ cần thiết trừ khi thực hiện chỉnh sửa.


-2

Tôi cũng rất cần tìm cách xác định các cài đặt Windows trên toàn cầu. Thứ nhất, để phân loại và xác định đúng các ảnh sao lưu và xác định những ảnh nào được khôi phục trên máy nào. Thứ hai, để đặt tên cho các cặp đồng bộ hóa để đồng bộ hóa các tệp và để xác định cặp đồng bộ hóa nào sẽ sử dụng tùy thuộc vào các máy liên quan đến đồng bộ hóa.

Sau khi đọc một số bài đăng, bao gồm cả những bài đăng trên trang web này, tôi kết luận rằng không có cách nào dễ dàng để tìm một định danh duy nhất trên toàn cầu về cài đặt Windows. Điều đó thật tệ. Giống như phần cứng, phần mềm cũng nên có số sê-ri riêng. Ồ tốt Vì vậy, đây là cách giải quyết của tôi: Thay vì tìm một mã định danh duy nhất trên toàn cầu, tôi đã tạo một câu lệnh được cách ly, lấy cảm hứng từ cách Microsoft đặt tên các ổ đĩa mạng trên Windows và cách nó đặt tên các thư mục được chia sẻ trong Virtual PC: "[WINDOWS ID sản phẩm ( dưới dạng biến )] Được cài đặt trên [SỐ MÁY TÍNH SỐ ( dưới dạng biến)]. "Mặc dù số nhận dạng sản xuất Windows là duy nhất chỉ trong trường hợp khóa sản phẩm tương ứng, tuy nhiên, nó vẫn có thể giống nhau trên một số cài đặt, đặc biệt là trên các máy tính được sản xuất hàng loạt có chứa Windows cài đặt tại nhà máy, nhưng là một chuỗi số là duy nhất và khác nhau từ máy này sang máy khác. Công thức được đề cập ở trên là tất cả những gì tôi cần cho mục đích của mình; Tôi không cần SID (Tôi cho rằng nó biểu thị Số nhận dạng bảo mật) hoặc một cái gì đó phức tạp hơn, bởi vì sự kết hợp của cả hai biến tham chiếu chính xác cài đặt Windows mà tôi cần xác định, trong khi đó mỗi biến riêng lẻ lại không có tác dụng với tôi. Cụ thể và thứ nhất, nhận dạng sản phẩm Windows giống hệt nhau trên các máy tính được sản xuất bởi cùng một nhà sản xuất và được tìm thấy trong cùng một dòng sản phẩm và điều đó không phục vụ cho tôi, vì tôi sở hữu một số máy giống hệt nhau. Thứ hai, số sê-ri không đủ nhận dạng duy nhất, vì tôi có một số cài đặt Windows trên một máy tính mà số sê-ri máy tính không giải quyết được. Do đó tôi đề nghị phương pháp của tôi.

Ngoài ra, và trước khi bạn hỏi về nó: Tôi đã chọn không dựa vào tên máy tính của mình. Thông tin dựa trên người dùng và do đó cần phải được kiểm kê. Tuy nhiên, nhận dạng sản phẩm Windows và số sê-ri máy tính đã được xác định, kiểm kê và kết nối không ngừng với hai sản phẩm cụ thể, do đó loại bỏ nhu cầu kiểm kê lại chúng. Tôi sẽ không chọn để xác định cài đặt Windows với một định danh duy nhất của ổ đĩa cứng, vì tôi có thể và khá có khả năng chuyển đổi chúng từ máy này sang máy khác, đặc biệt là khi dung lượng ổ đĩa luôn trong tình trạng thay đổi liên tục. Với cùng một mã thông báo, tôi sẽ ít sử dụng danh pháp nhận dạng của đơn vị xử lý trung tâm hoặc bo mạch chủ, như đã được đề xuất trước đây trong một câu trả lời trước đây của Sholess. Cuối cùng, tôi cũng từ chối tùy chọn rõ ràng nhất để xác định cài đặt Windows (mặc dù nó không được đề cập bởi bất kỳ ai khác từ những gì tôi có thể thấy): sử dụng khóa sản phẩm. Mặc dù nó là duy nhất, nhưng nó chỉ là giấy phép để cài đặt một phiên bản Windows nhất định; nó không thực sự được kết nối với một cài đặt Windows cụ thể và nó không phân biệt nó là được cài đặt trên một máy cụ thể, mặc dù giấy phép được cấp do việc mua một máy tính nhất định.


3
Và câu trả lời của bạn cho câu hỏi là ...?
Deer Hunter
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.