Systeminfo
Moderador: Moderadores
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Systeminfo
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
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!
Re: Systeminfo
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.
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!
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

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Re: Systeminfo
Como dizem aqui em Minas...
Hennnnnn....
Isso é que é resposta rápida.
Valeu Maligno.
Obrigado a todos (de novo!).
MarceloG
Hennnnnn....
Isso é que é resposta rápida.
Valeu Maligno.
Obrigado a todos (de novo!).
MarceloG
Água mole em pedra dura tanto bate que até espirra!
Re: Systeminfo
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.
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!
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!
- Pablo César
- Usuário Nível 7

- Mensagens: 5312
- Registrado em: 31 Mai 2006 10:22
- Localização: Curitiba - Paraná
Systeminfo
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:)
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.
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.
Re: Systeminfo
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.Quem sabe deva mudar a sua metodologia, como indicou o Maligno.
[]'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!
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!
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7929
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Re: Systeminfo
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.
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.
Itamar M. Lins Jr.
-
MARCELOG
- Usuário Nível 4

- Mensagens: 546
- Registrado em: 15 Mar 2005 16:54
- Localização: Divinópolis/MG
Re: Systeminfo
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
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!
