Página 1 de 1

Systeminfo

Enviado: 04 Mai 2010 11:17
por MARCELOG
Olá pessoal,
de modo a tentar evitar eventual pirataria, utilizo para geração do serial de controle o número de identificação do Windows, a data da sua instalação e a identificação da bios.
Embora possível a reprodução dessas informações, acho improvavél a ocorrência de valores idênticos.
Essas informações são obtidas através do "systeminfo.exe" que já vem no Windows.
Utilizo a seguite síntese:
"cmd /c systeminfo.exe > info.txt"
Isso gera um arquivo com as informações do sistema.
Daí, com ajuda da função memoread(), substr() e at() pesquiso a variável e realizo cálculos e testes para licenciamento.
Esse teste é realizado toda vez que o sistema é iniciado.
Entretanto, no primeiro acesso, quando o arquivo é inexistente, o xHarbour não está conseguindo ler o mesmo.
Ou seja, a sequência de criação do arquivo e leitura não está funcionando corretamente.
Como fica esquisito, no primeiro acessso, informar para o usuário que houve uma falha de leitura no sistema e que os mesmo deve ser reiniciado, "imoralmente", estou declarando que o processamento de segurança foi concluído e que o sistema deve ser reiniciado.
Assim, eu pergunto:
1) Há outra forma de obter as informações indicadas, ou seja, sem utilização do systeminfo.exe?
2) O "erro" está sendo causado em virtude da velocidade de processamento, ou seja, criação do arquivo e imediata leitura? Como resolver o problema?

Atenciosamente.

MarceloG

Re: Systeminfo

Enviado: 04 Mai 2010 11:46
por Maligno
Essas informações você encontra no Registro do Windows:

Diversos dados da motherboard:
HKEY_LOCAL_MACHINE/HARDWARE/Description/System

Serial de Instalação do Windows (ProductID):
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft//Windows/CurrentVersion

Em algum lugar por ali deve estar a data de instalação do Windows. Mas não achei. :)

Re: Systeminfo

Enviado: 04 Mai 2010 12:07
por MARCELOG
Como dizem aqui em Minas...
Hennnnnn....

Isso é que é resposta rápida.

Valeu Maligno.

Obrigado a todos (de novo!).

MarceloG

Re: Systeminfo

Enviado: 04 Mai 2010 13:17
por Maligno
Mas em se tratando de números, o melhor, a meu ver, seria você obter um número que realmente seja único. O número do Windows e o número que se supõe, é de série da motherboard (de fato não é - ele é de classificação), são repetíveis. A única coisa que muda realmente é a data da instalação. Se for pra usar um número, sugiro o de série de fábrica do HD, que é realmente único e imutável. Se quiser ver como é esse número, baixe a biblioteca WAPI e execute o utilitário LIB\WAPI2LIB\WAPI.EXE com o comando de linha:

WAPI -GETHDINFO:saida.txt

É para Clipper. Mas o programa é Windows console. A saída será, na ordem: modêlo do HD, número de série de fábrica e a data do firmware. O zero inicial é apenas um flag indicativo de sucesso na operação de leitura. Claro, se for diferente de zero, nada será informado além do código de erro. Até porque, a leitura desses dados depende da idade do equipamento. No README tem mais detalhes.

Mas em termos de segurança na proteção de software há sempre muitas idéias e opiniões. Particularmente, eu prefiro usar a internet. Muito melhor. Se preciso liberar um programa, mesmo que parcialmente, posso fazer isso remotamente. É bem mais confortável. Aliás, a biblioteca WAPI também dá acesso à internet.

Systeminfo

Enviado: 04 Mai 2010 22:42
por Pablo César
Quem sabe deva mudar a sua metodologia, como indicou o Maligno. Eu gostei de ver esse aplicativo, pena que não roda em win98, senão eu pensaria em adotar também. Mas seguindo a sua linha de pensamento:

Você disse que não conseguia acessar no tempo certo o arquivo porque demora com o momento da sua criação por estar recolhendo certos dados. Então, você poderia ver o atributo desse arquivo em looping. Acho que quando está sendo criado está em modo readonly (que não permite deleção, por exemplo). Ou outra solução seria você ler o arquivo num looping, buscando algo que determina a ultima linha (como por exemplo: placa(s) de rede:)

Re: Systeminfo

Enviado: 04 Mai 2010 22:50
por sygecom
Ou:
viewtopic.php?f=43&t=9322

Re: Systeminfo

Enviado: 04 Mai 2010 22:55
por Maligno
Quem sabe deva mudar a sua metodologia, como indicou o Maligno.
Só mencionei a WAPI, para que ele talvez,se sinta inspirado em recortar essa parte de identificação do serial do HD do fonte do utilitário (não precisaria de DLL). Aí, creio eu, ficaria uma opção um pouco melhor.

Re: Systeminfo

Enviado: 05 Mai 2010 16:32
por Itamar M. Lins Jr.
Ola!
O Harbou tem essa função para pegar o número do HD.
Alias até o número 00:00:00 da placa de rede, etc é possivel pegar via harbour.

Saudações,
Itamar M. Lins jr.

Re: Systeminfo

Enviado: 12 Mai 2010 11:16
por MARCELOG
Olá pessoal,
ao chamar a criação do arquivo para leitura do ambiente, estava utilizando a linha de comando "cmd /c systeminfo.exe > info.txt".
A situação importa na execução oculta de dois programas externos, ou seja, cmd.exe e systeminfo.exe.
Com a opção "/c" não há necessidade de aguardar o retorno da operação.
Assim, quando mandava criar o arquivo e quase automaticamente verificava a sua existência para tratamento dava erro.
Muito embora pudesse haver alteração interna dos dados, isso não acontecia quando o arquivo já existia, mas isso é outra história (a alteração, mesmo com o comando para criação, deve ser mais rápida quando o arquivo já existe).
Por outro lado, não queria aquela tela preta no vídeo, com utilização da opção "/k" do cmd.
Então, resolvi o problema com uma POG(Programação Orientada a Gambiarra).
Bastou colocar um inkey(1) entre a criação e o tratamento do arquivo.
Esse 1 segundo de delay, que não compromete rendimento algum, é suficiente para que o arquivo texto solicitado seja corretamente criado para ser posteriormente tratado.

De qualquer forma, muito obrigado a todos.

MarceloG