Procurando um GUID exclusivo para identificar uma instalação do Windows

14

Estou procurando um GUID exclusivo armazenado no registro do Windows que me ajudaria a identificar uma instalação ou PC do Windows.

O GUID deve;

  • Sempre existe
  • Seja exclusivo para uma instalação específica do Windows, ou seja, nenhum outro computador teria o mesmo ID
  • Nunca mude

Muito Obrigado

user28967
fonte
Por que postar no SF e SU? superuser.com/questions/82484/…
MDMarra

Respostas:

7

Você espera que esse número mude ou permaneça o mesmo se a unidade para essa instalação for movida para outro sistema?

Você espera que esse número seja alterado se a instalação for clonada com fantasma ou algo mais? Você pode depender de sistemas clonados sempre sendo sysprep'd seguindo as recomendações da Microsoft? O SID deve ficar bom, se você tiver certeza de que suas instalações nunca serão clonadas.

No caso de um sistema de inicialização múltipla (ou seja, o sistema possui o Windows 7 e o Windows XP instalado), você precisa identificar as duas instalações como únicas, relacionadas ou o quê?

Por que você precisa que isso faça parte da instalação do Windows, e não algo apresentado pelo hardware, talvez o número de série do processador ?

Suponho que você esteja perguntando sobre isso para algum tipo de script ou ferramenta que esteja usando para fins de inventário.

Por que você simplesmente não gera seu próprio número na primeira vez em que executa a ferramenta e a salva na seção de registro LOCAL_MACHINE? Talvez até use um número RFC4122 Tipo 1 e que inclua o endereço de hardware para uma das interfaces de rede. Dessa forma, você pode verificar se o UUID ainda pertence a esse sistema comparando o UUID com os atuais adaptadores de rede.

Zoredache
fonte
7

Você pode obter o GUID do registro do Windows, por exemplo:

var regpath = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Cryptography\\MachineGuid";
var oWSS = new ActiveXObject("WScript.Shell");
clientGUID = oWSS.RegRead(regpath);
friednail
fonte
seu código está em c # ou alguma outra linguagem de programação?
Tim
É o JavaScript que eu usei no gadget do Windows 7.
friednail 30/03
1
C # e Javascript têm sintaxes muito semelhantes?
Tim
Desculpe, não posso lhe dizer, não estou familiarizado com c #. Essas são apenas três linhas de um código simples, elas contêm definição de variável, literal de string, criação de novo objeto e usam uma notação de ponto para acessar o método de um objeto. Provavelmente, existem toneladas de outras estruturas de código para comparar idiomas.
friednail 31/03
@ Tim, acho que você está interessado em ler chaves de registro em c #? Em caso afirmativo, talvez essa pergunta seja útil para você
friednail 31/03
2

Você deseja usar o ID do produto Windows. Esse é um número exclusivo gerado (hash) parcialmente da chave do produto instalada e parcialmente da configuração do hardware, incluindo o número de série do processador e o endereço MAC da primeira NIC. Você pode ler sobre isso neste artigo (um pouco datado, mas ainda válido) do TechNet . O ID do produto pode ser encontrado na tela Informações do sistema ou programaticamente através de vários métodos.

Informação do sistema

tfrederick74656
fonte
O registro que detém a licença janela usuários está localizada em: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion, sem truques especiais necessárias para lê-lo
Walter Vehoeven
0

Supondo que seja um servidor Windows, existe um artigo da base de conhecimento que fala sobre como tirá-lo do Win2k: KB224544 .

Não sei se o LDP.exe ainda funciona assim, mas pode.

Matt Simmons
fonte
Esse artigo se aplica apenas a controladores de domínio.
21413 MDMarra
Obrigado pela informação, estou olhando para um GUID que existiria em todas as versões do Windows, XP e acima
user28967
0

Se você deseja identificar uma instalação do Windows, pode estar sem sorte. Em ambientes corporativos, as estações de trabalho geralmente são geradas por imagens e não instaladas. Cada computador criado a partir desta imagem será idêntico.

O mais próximo do que você descreveu é o SID da máquina, mas isso não funciona por dois motivos:

  1. As máquinas Windows XP com imagem têm o mesmo SID, a menos que você execute o NewSID, o que muitas pessoas não têm.
  2. Todos os controladores de domínio em um único domínio compartilham o mesmo SID da máquina.

Para que você precisa desse identificador? Sua melhor aposta pode ser gerar a sua própria, se isso for possível.

Stephen Jennings
fonte
1
Se as máquinas tiverem syspreps após a geração de imagens, o SID será diferente. Se eles não são (o que geralmente não são), os SIDs serão os mesmos.
Mrdenny
0

Você pode tentar o endereço MAC, que é pelo menos destinado a ser globalmente exclusivo e permanente. Isso também teria a vantagem de poder obter o IP e o nome do host de uma máquina sem muito incômodo (e isso também não seria restrito ao Windows). Ele não atendia ao seu requisito de estar no registro, mas você pode usar o WMI para ele.

Exemplos de scripts aqui: http://www.winforums.com/showthread.php?t=8842

Maximus Minimus
fonte
0

E o DriveId do volume do sistema? Você pode obter o ID da Win32_Volumeclasse WMI, procurando entradas com SystemVolume True.

No PowerShell:

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

(É claro que isso pode ser remotamente).

Richard
fonte
0

Há um SID usado pelo Windows Update que você pode usar. Novamente, não há garantia de que será único o tempo todo ou que não mudará.

Penso que o mais próximo de atender às suas necessidades seria o endereço MAC, no entanto, isso poderá mudar se a NIC for substituída.

Sua melhor aposta seria escrever seu próprio GUID no registro e usá-lo.

mrdenny
fonte
0

Para confirmar o SID da máquina em uma máquina específica, você pode executar o SysInternals PSGETSID% COMPUTERNAME% $. (SID do domínio).

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

EDIT: Removidas referências ao SID da máquina no registro, que podem não ser exclusivas (ou mesmo corretas).

Greg Askew
fonte
Ah, vamos lá, se você quiser modificar alguém, pelo menos deixe um comentário e deixe-o saber o que há de errado.
Matt Simmons
Não é garantido que os SIDs de máquinas sejam exclusivos: blogs.technet.com/markrussinovich/archive/2009/11/03/…
Pausado até novo aviso.
@ Dennis - certo. Portanto, se estiver em um domínio: psgetsid.exe% computername% $ produziria um identificador exclusivo.
22411 Greg Askew
@ Greg: E se você construir suas estações de trabalho a partir de imagens? Se você não executou o newsid, todos compartilharão o mesmo SID da máquina.
21139 Stephen Jennings
@ Stephen - O uso do SID do domínio resolveria esse problema. blogs.msdn.com/aaron_margosis/archive/2009/11/05/…
Greg Askew
-1

Por que não usar apenas o nome do computador? Será único no seu domínio, todas as instalações do Windows têm um e só serão alteradas se um administrador de domínio o alterar, o que nunca será necessário, a menos que seja feita uma correção.

Shial
fonte
-2

Eu também preciso encontrar uma maneira de identificar globalmente exclusivamente as instalações do Windows. Primeiro, para classificar e identificar adequadamente as imagens de backup e determinar quais são recuperadas em quais máquinas. Em segundo lugar, para nomear pares de sincronização para sincronizar arquivos e determinar qual par de sincronização usar, dependendo das máquinas envolvidas na sincronização.

Depois de ler várias postagens, incluindo as deste site, concluo que não há uma maneira fácil de encontrar um identificador globalmente exclusivo de uma instalação do Windows. Isso é muito mau. Como o hardware, o software também deve ter seu próprio número de série. Ah bem! Portanto, esta é minha solução alternativa: em vez de encontrar um único identificador globalmente exclusivo, criei uma declaração sylized, inspirada na maneira como a Microsoft nomeia unidades de rede no Windows e na maneira como nomeia pastas compartilhadas no Virtual PC: "[WINDOWS ID DO PRODUTO ( como variável )] Instalado em [NÚMERO DE SÉRIE DO COMPUTADOR ( como variável)]. "Embora um número de identificação de produção do Windows seja único apenas na medida em que a chave do produto correspondente é, ele é, no entanto, passível de ser o mesmo em várias instalações, especialmente em computadores produzidos em massa que contêm o Windows instalado de fábrica, mas um número serial. número é único e é diferente de uma máquina para outra.A fórmula acima mencionada é tudo o que preciso para meus propósitos; não preciso do SID (presumo que ele represente o Identificador de Segurança) ou algo mais complexo, porque a combinação de ambas as variáveis ​​faz referência exatamente à instalação do Windows que eu preciso identificar, enquanto que cada variável individual é, por si só, inútil para mim. Especificamente e em primeiro lugar, a identificação do produto Windows é idêntica em computadores fabricados pelo mesmo fabricante e encontrados na mesma linha de produtos e isso não serve para nada, uma vez que possuo várias máquinas idênticas. Em segundo lugar, o número de série não é suficientemente identificável, pois eu tenho várias instalações do Windows em um computador que o número de série do computador não aborda. Eu, portanto, sugiro meu método.

Além disso, e antes que você pergunte: escolhi não basear meu método no nome do computador. As informações são baseadas no usuário e, portanto, precisam ser inventariadas. No entanto, a identificação do produto Windows e o número de série do computador já estão identificados, inventariados e invariavelmente conectados a dois produtos específicos, eliminando assim a necessidade de inventá-los novamente. Eu não escolheria identificar uma instalação do Windows com um identificador exclusivo de discos rígidos, pois sou capaz e bastante apto a alterná-los de uma máquina para outra, especialmente quando as capacidades da unidade estão em um estado de fluxo constante. Da mesma forma, eu usaria muito menos a nomenclatura de identificação da unidade central de processamento ou da placa-mãe, como já foi sugerido em uma resposta anterior da Shoeless. Finalmente, também rejeito a opção mais óbvia de identificar uma instalação do Windows (embora não tenha sido mencionada por mais ninguém pelo que posso ver): usando a chave do produto. Embora seja único, é apenas uma licença para instalar uma determinada versão do Windows; na verdade, ele não está conectado a uma instalação específica do Windows e não o distingue de instalado em uma máquina específica, mesmo que a licença tenha sido concedida em virtude da compra de um determinado computador.

Neal Bangia
fonte
3
E sua resposta para a pergunta é ...?
Deer Hunter