Alla ricerca di un GUID univoco per identificare un'installazione di Windows


14

Sto cercando un GUID univoco memorizzato nel registro di Windows che mi aiuti a identificare un'installazione di Windows o un PC.

Il GUID deve;

  • Esiste sempre
  • Essere unici per una particolare installazione di Windows, ovvero nessun altro computer avrebbe lo stesso ID
  • Non cambiare mai

Grazie molto


Perché pubblicare su SF e SU? superuser.com/questions/82484/…
MDMarra,

Risposte:


7

Ti aspetti che questo numero cambi o rimanga lo stesso se l'unità per quell'installazione viene spostata su un altro sistema?

Ti aspetti che questo numero venga modificato se l'installazione viene clonata con ghost o qualcos'altro? Puoi fare affidamento sul fatto che i sistemi clonati siano sempre sistemati seguendo i consigli di Microsoft? Il SID dovrebbe andare bene, se puoi essere sicuro che le tue installazioni non vengano mai clonate.

Nel caso di un sistema ad avvio multiplo (ovvero il sistema ha Windows 7 e un'installazione Windows XP) è necessario identificare le due installazioni come uniche, o correlate o cosa?

Perché hai bisogno che questo sia parte dell'installazione di Windows e non qualcosa presentato dall'hardware, forse il numero di serie del processore ?

Suppongo che tu stia chiedendo questo per qualche tipo di script o strumento che stai usando a fini di inventario?

Perché non generare semplicemente il proprio numero la prima volta che si esegue lo strumento e lo si salva nell'hive del registro LOCAL_MACHINE? Forse anche utilizzare un numero di tipo 1 RFC4122 e che dovrebbe includere l'indirizzo hardware per una delle interfacce di rete. In questo modo è possibile verificare se l'UUID appartiene ancora a quel sistema confrontando l'UUID con le schede di rete attuali.


7

È possibile ottenere GUID dal registro di Windows, ad esempio:

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

è il tuo codice in C # o qualche altro linguaggio di programmazione?
Tim

È JavaScript che ho usato nel gadget di Windows 7.
Friednail,

1
C # e Javascript hanno sintassi molto simili?
Tim

Spiacenti, non posso dirtelo, non ho familiarità con C #. Queste sono solo 3 righe di un semplice codice, contengono definizione variabile, letterale stringa, creazione di nuovo oggetto e utilizzo di una notazione punto per accedere al metodo di un oggetto. Probabilmente ci sono tonnellate di altre strutture di codice per confrontare le lingue.
Friednail,

@Tim, immagino che tu sia interessato a leggere le chiavi di registro in C #? Se è così, forse questa domanda SO ti sarà di aiuto
friednail

2

Si desidera utilizzare l'ID prodotto di Windows. Questo è un numero univoco generato (con hash) in parte dalla chiave del prodotto installata e in parte dalla configurazione hardware, incluso il numero di serie del processore e l'indirizzo MAC dalla prima scheda di rete. Puoi leggere su questo articolo TechNet (un po 'datato, ma ancora valido) . L'ID prodotto può essere trovato nella schermata Informazioni di sistema o programmaticamente attraverso diversi metodi.

Informazioni di sistema


Il registro che contiene la licenza della finestra degli utenti si trova in: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, non sono necessari trucchi speciali per leggerlo
Walter Vehoeven

0

Supponendo che sia un server Windows, c'è un articolo della knowledge base che parla di come estrarlo da Win2k: KB224544 .

Non so se LDP.exe funziona ancora così, ma potrebbe.


Tale articolo si applica solo ai controller di dominio.
MDMarra,

Grazie per le informazioni, sto cercando un GUID che esisterebbe su tutte le versioni di Windows, XP e successive
user28967


0

Se stai cercando di identificare un'installazione di Windows, potresti essere sfortunato. Negli ambienti aziendali, le workstation sono spesso fotografate piuttosto che installate. Ogni computer creato da questa immagine sarà identico.

La cosa più vicina a ciò che hai descritto è il SID della macchina, tuttavia questo non funziona per due motivi:

  1. Le macchine Windows XP con imaging hanno lo stesso SID a meno che non eseguiate NewSID contro di loro, cosa che molte persone non hanno.
  2. Tutti i controller di dominio su un singolo dominio condividono lo stesso SID della macchina.

Per cosa hai bisogno di questo identificatore? La tua migliore scommessa potrebbe essere quella di generare la tua, se possibile.


1
Se le macchine sono syspreps dopo l'imaging, il SID sarà diverso. Se non lo sono (cosa che spesso non accade) i SID saranno gli stessi.
mrdenny,

0

Potresti provare l'indirizzo MAC, che almeno deve essere globalmente univoco e permanente. Ciò avrebbe anche il piacevole vantaggio di poter ottenere l'IP e il nome host di una macchina senza troppi problemi (e non sarebbe nemmeno limitato a Windows). Non soddisferebbe il tuo requisito di essere nel registro, ma puoi usare WMI per questo.

Script di esempio qui: http://www.winforums.com/showthread.php?t=8842


0

Che ne dici del DriveId del volume di sistema? È possibile ottenere l'id dalWin32_Volume classe WMI, cercando le voci con SystemVolume True.

In PowerShell:

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

(Questo può ovviamente essere remotato.)


0

C'è un SID utilizzato da Windows Update che potresti essere in grado di utilizzare. Ancora una volta non vi è alcuna garanzia che sarà unico ogni volta o che non cambierà.

Penso che la cosa più vicina a soddisfare le tue esigenze sarebbe l'indirizzo MAC, tuttavia ciò potrebbe cambiare se la scheda NIC venisse sostituita.

La soluzione migliore sarebbe quella di scrivere il proprio GUID nel registro e utilizzarlo.


0

Per confermare il SID del computer su un determinato computer, è possibile eseguire SysInternals PSGETSID% COMPUTERNAME% $. (Domain SID).

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

EDIT: rimossi i riferimenti al SID della macchina nel registro, che potrebbe non essere univoco (o addirittura corretto).


Oh andiamo, se hai intenzione di mod qualcuno, almeno lascia un commento e fai sapere loro cosa c'è che non va.
Matt Simmons,


@Dennis - giusto. Quindi se è su un dominio: psgetsid.exe% nomecomputer% $ produrrebbe un identificatore univoco.
Greg Askew,

@Greg: cosa succede se si creano le workstation dalle immagini? Se non hai eseguito newsid, condivideranno tutti lo stesso SID della macchina.
Stephen Jennings,

@Stephen - L'uso del Domain SID risolve questo problema. blogs.msdn.com/aaron_margosis/archive/2009/11/05/…
Greg Askew

-1

Perché non usare semplicemente il nome del computer? Sarà unico nel tuo dominio, tutte le installazioni di Windows ne avranno una e cambieranno solo se un amministratore di dominio lo modifica, cosa che non dovrebbe mai essere necessaria se non facendo una correzione.


-2

Anch'io ho bisogno di trovare un modo per identificare in modo univoco a livello globale le installazioni di Windows. Innanzitutto, al fine di classificare e identificare correttamente le immagini di backup e determinare quali vengono recuperate su quali macchine. In secondo luogo, al fine di nominare le coppie di sincronizzazione per la sincronizzazione dei file e determinare quale coppia di sincronizzazione utilizzare in base alle macchine coinvolte nella sincronizzazione.

Dopo aver letto diversi post, inclusi quelli su questo sito Web, concludo che non esiste un modo semplice per trovare un identificatore univoco globale di un'installazione di Windows. Questo è troppo male. Come l'hardware, anche il software dovrebbe avere il proprio numero di serie. Oh bene! Quindi questa è la mia soluzione alternativa: invece di trovare un unico identificatore univoco a livello globale, ho creato un'istruzione sylized, che si ispira al modo in cui i nomi di rete di Microsoft guidano su Windows e al modo in cui nomina le cartelle condivise in Virtual PC: "[WINDOWS ID PRODOTTO ( come variabile )] Installato su [NUMERO DI SERIE COMPUTER ( come variabile)]. "Sebbene un numero di identificazione della produzione di Windows sia univoco solo nella misura in cui lo è il corrispondente codice" Product Key ", è tuttavia responsabile che sia lo stesso su più installazioni, in particolare su computer di serie contenenti Windows installati in fabbrica, ma un seriale il numero è unico ed è diverso da una macchina all'altra. La formula sopra menzionata è tutto ciò di cui ho bisogno per i miei scopi; Non ho bisogno del SID (presumo che significhi Identificatore di sicurezza) o qualcos'altro più complesso, perché la combinazione di entrambe le variabili fa riferimento esattamente all'installazione di Windows che devo identificare, mentre ogni singola variabile non è di per sé inutile. In particolare e in primo luogo, l'identificazione del prodotto Windows è identica su computer realizzati dallo stesso produttore e trovati nella stessa linea di prodotti e questo non mi serve a nulla, dal momento che possiedo diverse macchine identiche. In secondo luogo, il numero seriale non è sufficientemente identificativo in modo univoco, dal momento che ho diverse installazioni di Windows su un computer che un numero seriale del computer non risolve. Pertanto suggerisco il mio metodo.

Inoltre, e prima di informartene, ho scelto di non basare il mio metodo sul nome del computer. Le informazioni sono basate sull'utente e pertanto devono essere inventariate. Tuttavia, l'identificazione del prodotto Windows e il numero di serie del computer sono già identificati, inventariati e invariabilmente collegati a due prodotti specifici, eliminando così la necessità di inventarli nuovamente. Non sceglierei di identificare un'installazione di Windows con un identificatore univoco di dischi rigidi, dal momento che sono in grado e sono abbastanza adatto a spostarli da una macchina all'altra, specialmente quando le capacità dell'unità sono in uno stato di flusso costante. Allo stesso modo, utilizzerei molto meno la nomenclatura identificativa dell'unità di elaborazione centrale o della scheda madre, come è stato finora suggerito in una precedente risposta di Shoeless. Infine, rifiuto anche l'opzione più ovvia di identificare un'installazione di Windows (anche se non è stata menzionata da nessun altro da quello che posso vedere): usare il codice Product Key. Sebbene sia unico, è solo una licenza per installare una determinata versione di Windows; in realtà non è collegato a una particolare installazione di Windows e non lo distingue come installato su un determinato computer, anche se la licenza è stata concessa in virtù dell'acquisto di un determinato computer.


3
E la tua risposta alla domanda è ...?
Deer Hunter
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.