Processador WIN32:: é ProcessorId único para todos os computadores

Quero usar uma coisa única para um sistema de licenciamento. decidi usar o ProcessorID da classe de gestão de processadores Win32_.

Tentei em dois sistemas diferentes com o mesmo tipo de processador..

Mostra-me o mesmo processo para ambos os sistemas. estou a usar este código

public static String GetCPUId()
{
    String processorID = "";

    ManagementObjectSearcher searcher = new ManagementObjectSearcher(
        "Select * FROM WIN32_Processor");

    ManagementObjectCollection mObject = searcher.Get();

    foreach (ManagementObject obj in mObject)
    {
        processorID = obj["ProcessorId"].ToString();
    }

    return processorID;
}
Author: casperOne, 2009-07-09

4 answers

Não, Não pode ser garantido que será único, como o processador pode nem mesmo suportar a instrução CPUID, e nesse caso, a chamada não pode ser garantida para ter sucesso.

Além disso, está a negligenciar que uma máquina pode ter múltiplos processadores, por isso, obter a identificação de um único processador não ajuda.

Como outros indicaram, se você quiser obter um id único para o sistema, a sua melhor aposta é criar um id que é uma amálgama de vários ids componentes em sistema.

Um hash (e não apenas qualquer, mas aquele que tem Muito poucas colisões) de vários valores do hardware {[[9]}Pode bastar. Você provavelmente gostaria de usar coisas que estão bastante embutidas no sistema, como o processador, informações da placa-mãe, mas não coisas facilmente desligadas/alteradas, como drives USB/hubs/etc.

 17
Author: casperOne, 2012-10-10 20:49:43
A maioria dos sistemas de licenciamento dependem de vários componentes de hardware para criar uma impressão digital. Nenhum componente único é usado como a única chave única. Por isso, pode ter em consideração o seguinte:
  • Os endereços MAC de todos os adaptadores de rede (podem tornar-se complicados se tiverem uma estação de acoplagem ou activarem/desactivarem o seu wireless num portátil)
  • CPUID
  • números de componentes da placa-mãe (como os controladores IDE ou SCSI)
  • Número de série da unidade de sistema (não Volume ID que é fácil de mudar)
  • etc.
Quando combinado como um todo, terá uma representação única da máquina. O perigo naturalmente vem quando o usuário muda algo em sua máquina. Perdem a licença? Têm de te contactar?

Note também que as classes WMI requerem frequentemente direitos de administração para ler o tipo de informação que está à procura, o que seria um verdadeiro aborrecimento para os utilizadores do Vista & Windows 7.

O bloqueio de hardware é muito é difícil acertar. Por isso recomendo qualquer um. não o faças nem 2. compre uma biblioteca comercial que já faça isso.
 10
Author: Paul Alexander, 2009-07-09 04:41:56

O ProcessorID ou CPUID são para identificar o modelo e conjunto de características do processador ( ARM, x86 / x64 ).

O Pentium III suportava um número de série do processador (PSN). além de apenas ser suportado no Pentium III (e nos processadores Transmeta Efficeon e Crusoe), a funcionalidade teve de ser activada na BIOS e levantou preocupações de Privacidade.

Então, não, o ProcessorID não é único para todos os computadores. Além disso, é muito provável que não ser único em todos os computadores em sua empresa (uma vez que muitas organizações compram vários computadores do mesmo modelo).
 6
Author: Trisped, 2013-03-11 21:39:59
Para o texto único que procura, usamos o endereço MAC. Se o Usuário não tiver um endereço MAC nós simplesmente permitimos várias instalações. Abrange a maioria dos casos, que é tudo o que queríamos alcançar.
 1
Author: Brian R. Bondy, 2017-05-23 11:47:08