Szukasz unikalnego identyfikatora GUID do identyfikacji instalacji systemu Windows

15

Szukam unikalnego identyfikatora GUID przechowywanego w rejestrze systemu Windows, który pomógłby mi zidentyfikować instalację systemu Windows lub komputer.

GUID musi;

  • Zawsze istnieje
  • Unikaj konkretnej instalacji systemu Windows, tzn. Żaden inny komputer nie miałby tego samego identyfikatora
  • Nigdy się nie zmieniaj

Wielkie dzięki

użytkownik 28967
źródło
Dlaczego publikować na SF i SU? superuser.com/questions/82484/…
MDMarra,

Odpowiedzi:

8

Identyfikator GUID można uzyskać z rejestru systemu Windows, na przykład:

var regpath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography\\MachineGuid";
var oWSS = new ActiveXObject("WScript.Shell");
clientGUID = oWSS.RegRead(regpath);
smażony ślimak
źródło
czy twój kod jest w C # lub innym języku programowania?
Tim
Jest to JavaScript, którego użyłem w gadżecie Windows 7.
friednail
1
Czy C # i JavaScript mają bardzo podobne składnie?
Tim
Niestety nie mogę powiedzieć, nie znam C #. To tylko 3 wiersze prostego kodu, zawierają definicję zmiennej, literał ciągu, tworzenie nowego obiektu i stosowanie notacji kropkowej, aby uzyskać dostęp do metody obiektu. Prawdopodobnie istnieje mnóstwo innych struktur kodu do porównania języków.
friednail
@Tim, myślę, że jesteś zainteresowany czytaniem kluczy rejestru w C #? Jeśli tak, to może to SO pytanie będzie dla ciebie
pomocne
7

Czy spodziewasz się, że ten numer zmieni się lub pozostanie taki sam, jeśli dysk do tej instalacji zostanie przeniesiony do innego systemu?

Czy spodziewasz się, że ta liczba zostanie zmieniona, jeśli instalacja zostanie sklonowana z duchem lub czymś innym? Czy możesz polegać na tym, że sklonowane systemy są zawsze wyświetlane zgodnie z zaleceniami Microsoftu? SID powinien być w porządku, jeśli możesz być pewien, że twoje instalacje nigdy nie zostaną sklonowane.

W przypadku systemu wielokrotnego rozruchu (tj. System ma instalację Windows 7 i Windows XP), czy musisz zidentyfikować dwie instalacje jako unikalne, powiązane lub co?

Dlaczego potrzebujesz, aby była to część instalacji systemu Windows, a nie coś prezentowanego przez sprzęt, być może numer seryjny procesora ?

Zakładam, że pytasz o jakiś skrypt lub narzędzie, którego używasz do celów inwentaryzacyjnych?

Dlaczego po prostu nie wygenerujesz własnego numeru przy pierwszym uruchomieniu narzędzia i nie zapiszesz go w gałęzi rejestru LOCAL_MACHINE? Być może nawet użyj numeru RFC4122 Type 1, który powinien zawierać adres sprzętowy jednego z interfejsów sieciowych. W ten sposób możesz sprawdzić, czy UUID nadal należy do tego systemu, porównując UUID z obecnymi kartami sieciowymi.

Zoredache
źródło
2

Chcesz użyć identyfikatora produktu Windows. Jest to unikalny numer generowany (mieszany) częściowo z zainstalowanego klucza produktu, a częściowo z konfiguracji sprzętowej, w tym numeru seryjnego procesora i adresu MAC z pierwszej karty sieciowej. Możesz o tym przeczytać w tym (nieco przestarzałym, ale wciąż aktualnym) artykule TechNet . Identyfikator produktu można znaleźć na ekranie Informacje o systemie lub programowo za pomocą kilku metod.

Informacje o systemie

tfrederick74656
źródło
Rejestr posiadający licencję na okno użytkownika znajduje się pod adresem: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, nie są wymagane żadne specjalne sztuczki, aby go odczytać
Walter Vehoeven
0

Zakładając, że jest to serwer Windows, istnieje artykuł w bazie wiedzy, który mówi o tym, jak go wyciągnąć z Win2k: KB224544 .

Nie wiem, czy LDP.exe nadal tak działa, ale może tak być.

Matt Simmons
źródło
Ten artykuł dotyczy tylko kontrolerów domeny.
MDMarra,
Dziękuję za informację, szukam identyfikatora GUID, który istniałby we wszystkich wersjach systemu Windows, XP i nowszych
user28967
0

Jeśli chcesz zidentyfikować instalację systemu Windows, możesz mieć pecha. W środowiskach korporacyjnych stacje robocze są często obrazowane i instalowane. Każdy komputer zbudowany z tego obrazu będzie identyczny.

Najbliższą rzeczą, którą opisałeś, jest identyfikator SID maszyny, jednak nie działa to z dwóch powodów:

  1. Zobrazowane maszyny z systemem Windows XP mają ten sam identyfikator SID, chyba że uruchomisz na nich NewSID, czego nie robi wiele osób.
  2. Wszystkie kontrolery domeny w jednej domenie mają ten sam identyfikator SID komputera.

Do czego potrzebujesz tego identyfikatora? Najlepszym rozwiązaniem może być wygenerowanie własnego, jeśli jest to możliwe.

Stephen Jennings
źródło
1
Jeśli maszyny są syspreps po obrazowaniu, SID będzie inny. Jeśli nie są (którymi często nie są), identyfikatory SID będą takie same.
mrdenny,
0

Możesz wypróbować adres MAC, który przynajmniej ma być globalnie unikalny i trwały. Miałoby to również tę zaletę, że można bez trudu uzyskać adres IP komputera i nazwę hosta (i nie ogranicza się to również do systemu Windows). Nie spełniłoby to twojego wymogu bycia w rejestrze, ale zamiast tego możesz użyć WMI.

Przykładowe skrypty tutaj: http://www.winforums.com/showthread.php?t=8842

Maximus Minimus
źródło
0

Co powiesz na DriveId woluminu systemowego? Możesz uzyskać identyfikator z Win32_Volumeklasy WMI, szukając wpisów w SystemVolume True.

W PowerShell:

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

(Można to oczywiście usunąć.)

Richard
źródło
0

Istnieje Windows SID używany przez Windows Update, którego możesz użyć. Ponownie nie ma gwarancji, że będzie wyjątkowa za każdym razem lub że się nie zmieni.

Myślę, że najbliższą rzeczą, która spełniłaby Twoje potrzeby, byłby adres MAC, jednak może się to zmienić, jeśli karta sieciowa zostanie wymieniona.

Najlepszym rozwiązaniem byłoby zapisanie własnego identyfikatora GUID w rejestrze i korzystanie z niego.

mrdenny
źródło
0

Aby potwierdzić identyfikator SID komputera na konkretnym komputerze, możesz uruchomić SysInternals PSGETSID% COMPUTERNAME% $. (SID domeny).

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

EDYCJA: Usunięto odniesienia do identyfikatora SID komputera w rejestrze, które mogą nie być unikalne (lub nawet prawidłowe).

Greg Askew
źródło
Och, daj spokój, jeśli chcesz kogoś zmodyfikować, przynajmniej zostaw komentarz i daj znać, co jest nie tak.
Matt Simmons,
Identyfikatory
Wstrzymane do odwołania.
@Dennis - racja. Więc jeśli jest w domenie: psgetsid.exe% nazwa_komputera% $ wygeneruje unikalny identyfikator.
Greg Askew,
@Greg: A jeśli zbudujesz stacje robocze z obrazów? Jeśli nie uruchomiłeś newsid, wszyscy będą dzielić ten sam identyfikator SID komputera.
Stephen Jennings,
@ Stephen - użycie identyfikatora SID domeny rozwiązałoby ten problem. blogs.msdn.com/aaron_margosis/archive/2009/11/05/…
Greg Askew
-1

Dlaczego nie użyć tylko nazwy komputera? Będzie unikalny w twojej domenie, wszystkie instalacje systemu Windows mają jedną i zmienią się tylko, jeśli administrator domeny ją zmieni, co nie powinno być potrzebne, chyba że dokonasz korekty.

Shial
źródło
-2

Ja też potrzebuję znaleźć sposób na globalną unikalną identyfikację instalacji Windows. Po pierwsze, w celu prawidłowej klasyfikacji i identyfikacji obrazów kopii zapasowych oraz ustalenia, które z nich zostaną odzyskane na poszczególnych komputerach. Po drugie, w celu nazwania par sychronizacji do synchronizacji plików i określenia, której pary synchronizacji użyć, w zależności od komputerów biorących udział w synchronizacji.

Po przeczytaniu kilku postów, w tym tych na tej stronie, dochodzę do wniosku, że nie ma łatwego sposobu na znalezienie unikalnego na całym świecie identyfikatora instalacji Windows. Szkoda. Podobnie jak sprzęt, oprogramowanie powinno mieć także własny numer seryjny. No cóż! Oto moje obejście: Zamiast znaleźć jeden globalnie unikalny identyfikator, stworzyłem sylizowane oświadczenie, które jest inspirowane sposobem, w jaki Microsoft nazywa dyski sieciowe w systemie Windows oraz sposobem, w jaki nazywa foldery współdzielone w wirtualnym komputerze: „[WINDOWS ID PRODUKTU ( jako zmienna )] Zainstalowano na [NUMER SERYJNY KOMPUTERA ( jako zmienna))]. „Chociaż produkcyjny numer identyfikacyjny systemu Windows jest unikalny tylko w takim stopniu, w jakim odpowiada mu odpowiedni klucz produktu, może on jednak być taki sam w kilku instalacjach, zwłaszcza na komputerach produkowanych seryjnie, zawierających fabrycznie zainstalowany system Windows, ale seryjny liczba jest unikalna i różni się w zależności od maszyny. Wyżej wymieniona formuła jest wszystkim, czego potrzebuję do swoich celów; nie potrzebuję identyfikatora SID (zakładam, że oznacza to identyfikator bezpieczeństwa) lub coś bardziej złożonego, ponieważ kombinacja obu zmiennych odnosi się dokładnie do instalacji systemu Windows, którą muszę zidentyfikować, podczas gdy każda pojedyncza zmienna sama w sobie nie jest dla mnie przydatna. W szczególności, po pierwsze, identyfikacja produktu Windows jest identyczna na komputerach wyprodukowanych przez tego samego producenta i znajdujących się w tej samej linii produktów i to mi nie służy, ponieważ jestem właścicielem kilku identycznych maszyn. Po drugie, numer seryjny nie jest jednoznacznie identyfikujący, ponieważ mam kilka instalacji systemu Windows na jednym komputerze, których numer seryjny nie rozwiązuje. Dlatego proponuję moją metodę.

Ponadto, zanim zapytasz o to: postanowiłem nie opierać mojej metody na nazwie komputera. Informacje są oparte na użytkownikach i dlatego muszą zostać zinwentaryzowane. Jednak identyfikacja produktu Windows i numer seryjny komputera są już zidentyfikowane, zinwentaryzowane i niezmiennie połączone z dwoma konkretnymi produktami, eliminując w ten sposób potrzebę ich ponownej inwentaryzacji. Nie zdecydowałbym się na identyfikację instalacji Windows z unikalnym identyfikatorem dysków twardych, ponieważ jestem w stanie i jestem w stanie przełączać je z jednej maszyny na drugą, szczególnie gdy pojemność dysków jest w ciągłym przepływie. Z tego samego powodu wolałbym używać nazewnictwa identyfikacyjnego albo jednostki centralnej, albo płyty głównej, jak sugerowano wcześniej w poprzedniej odpowiedzi Shoeless. Wreszcie, odrzucam również najbardziej oczywistą opcję identyfikacji instalacji systemu Windows (chociaż nikt nie wspomniał o niej z tego, co widzę): użycie klucza produktu. Chociaż jest unikalny, jest jedynie licencją na instalację określonej wersji systemu Windows; nie jest faktycznie podłączony do konkretnej instalacji Windows i nie odróżnia go jako zainstalowany na konkretnej maszynie, nawet jeśli licencja została udzielona z tytułu zakupu danego komputera.

Neal Bangia
źródło
3
A twoja odpowiedź na pytanie brzmi ...?
Deer Hunter