Systeminfo

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Systeminfo

Mensagem 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
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Systeminfo

Mensagem 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. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Re: Systeminfo

Mensagem por MARCELOG »

Como dizem aqui em Minas...
Hennnnnn....

Isso é que é resposta rápida.

Valeu Maligno.

Obrigado a todos (de novo!).

MarceloG
Água mole em pedra dura tanto bate que até espirra!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Systeminfo

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Systeminfo

Mensagem 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:)
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Systeminfo

Mensagem por sygecom »

Ou:
viewtopic.php?f=43&t=9322
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Systeminfo

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Systeminfo

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Re: Systeminfo

Mensagem 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
Água mole em pedra dura tanto bate que até espirra!
Responder