Página 2 de 4

Número serial do HD - Anti cópia

Enviado: 10 Jul 2012 09:43
por frazato
Bom dia! uso para controle de licensa de programa um pendriver com se fosse um proteq, igual a que muitas empresas usam para evitar copias do mesmo da seguinte maneira:

1 - Tenho um rotina q valida o uso do sistema checando a existencia do pendriver e liberando o acesso ou não.

2 - Nos terminais que acessam o servidor e gerado um solicitacao para o servidor que responde ao terminal.

3 - Estou terminando o processo de pegar esta atualizacao do pendriver na remoto, igual a varios exemplos de atualizacao online.


Frazato

Número serial do HD - Anti cópia

Enviado: 11 Jul 2012 19:36
por Abel
ola, sygecom,

tentei usar a rotina serial_hd, mas nao deu certo, deu erro de compilacao.
o meu harbour nao entendeu os comandos dllcall, loadlibrary e nem freelibrary.

qual lib tenho que anexar na compilacao ?

uso harbour 3.1 nighty

abracos,
ABEL

Número serial do HD - Anti cópia

Enviado: 11 Jul 2012 19:42
por Abel
asimoes, coloquei a sua function para pegar a serial da placa mae,
mas retornou uma string vazia.

tem algum ajuste para fazer , algum parametro ?

Estou utilizando harbour nighty 3.1

Abracos,

Número serial do HD - Anti cópia

Enviado: 12 Jul 2012 09:31
por asimoes
Abel,

Para compilar o exemplo do sygecom use a lib hbwin

As funções dllcall, loadlibrary e freelibrary.

loadlibrary Use: WAPI_LOADLIBRARY("DiskSerial.dll")
freelibrary Use: WAPI_FREELIBRARY( TDLL )
dllcall Use: HB_DYNCALL(TDLL,32,"GetSerialNumber",0,@lpBuffer )

Número serial do HD - Anti cópia

Enviado: 12 Jul 2012 15:33
por Abel
asimoes, agora compilou usando os comandos q vc passou,
mas ao executar e chegar na linha RETPORTA1:=HB_DYNCALL(TDLL,32,"GetSerialNumber",0,@lpBuffer )
ele simplesmente fecha o programa.
o conteudo na variavel Tdll apos colocar wapi_loadlibrary ficou 0x10000000

Abel

Número serial do HD - Anti cópia

Enviado: 12 Jul 2012 16:32
por sygecom
Olá Abel, veja abaixo como uso no Harbour:

Código: Selecionar todos

#include "hbdyn.ch"

******************
FUNCTION SERIAL_HD
******************
Local TDLL, RETPORTA1, lpBuffer:=SPACE(512)

setmode(25,80)

TDLL:=hb_libLoad("DiskSerial.dll")

? TDLL

IF EMPTY(TDLL)
   ALERT('ERRO')
   HB_LIBFREE( TDLL )
ENDIF

RETPORTA1:=hb_dynCall({"GetModelNumber",TDLL, HB_DYN_CALLCONV_STDCALL },0,@lpBuffer )
? RETPORTA1
? lpBuffer

lpBuffer:=SPACE(512)
RETPORTA1:=hb_dynCall({"GetRevisionNumber",TDLL, HB_DYN_CALLCONV_STDCALL },0,@lpBuffer )
? RETPORTA1
? lpBuffer

lpBuffer:=SPACE(512)
RETPORTA1:=hb_dynCall({"GetSerialNumber",TDLL, HB_DYN_CALLCONV_STDCALL },0,@lpBuffer )
? RETPORTA1
? lpBuffer

//  ? hb_dynCall( { "SystemParametersInfo", "user32.dll", HB_DYN_CALLCONV_STDCALL }, SPI_SETDRAGFULLWINDOWS, 1, 0, 0 )
//  HB_DYNCALL( { <cFunction>, <cLibrary> | <pLibrary> [, <nFuncFlags> [, <nArgFlags1>, ..., <nArgFlagsn> ]] }, ... ) -> <xResult>


HB_LIBFREE( TDLL )
RETURN(lpBuffer)

Número serial do HD - Anti cópia

Enviado: 14 Jul 2012 01:12
por Abel
Valeu Leonardo, agora deu certinho.

agradeco pelas dicas...
Valeu, Abracos.
ABEL

Número serial do HD - Anti cópia

Enviado: 14 Jul 2012 10:21
por Toledo
Leonardo, vamos imaginar que meu sistema está no drive local (C:), mas eu queria estas informações (GetSerialNumber) do servidor, que está compartilhado como drive K:, tem como?

Abraços,

Número serial do HD - Anti cópia

Enviado: 14 Jul 2012 15:56
por sygecom
Olá Toledo,
Nunca testei em rede mapeado, não sei de da certo, sempre usei por terminal que vai usar o sistema, independente se é servidor ou estação.
Tem o parâmetro do numero do HD que da para fazer um teste enviando 1,2,3 em vez de 0(zero), onde estou agora não tem rede e não consigo simular.

Número serial do HD - Anti cópia

Enviado: 14 Jul 2012 17:36
por Abel
asimoes,
estava fazendo um teste na function getserialplacamae() e esta funcionando normalmente,

quando tentei em duas maquinas asus i3, que tenho, ele sempre retorna uma string em branco.

o que pode ser ?
uma das maquinas tem win7 32 bits e a outra tem win2003 server.

Abel

Número serial do HD - Anti cópia

Enviado: 15 Jul 2012 15:55
por Adalberto
Frazato

Caro amigo, estou vivamente interessado em saber mais sobre como detectar um pendrive, pose compartilhar essa experiência?

Agradeço desde já sua vontade, Deus abençoa você e seus queridos.

[] Adalberto

Número serial do HD - Anti cópia

Enviado: 06 Ago 2012 22:34
por Hasse
Boa noite Leonardo.

Testei várias rotinas usando o DiskSerial.dll.

Tenho 2 HD's no meu DeskTop.
Percebi que, mesmo gravando o executável e a DLL em discos diferentes sempre obtenho o mesmo resultado.

O primeiro HD está particionado em C: e E: (ST3250820AS)
O segundo HD está sob F: (SAMSUNG HD502HI)

Tanto rodando no Drive C: quanto no E: ou ainda no F:, sempre obtenho o mesmo resultado (ST3250820AS)

Testei o DiskChange( "C:" ), DiskChange( "E:" ) e DiskChange( "F:" ). Também não modificou o resultado.

Somente trocando de computador o aplicativo retorna valores diferentes.

Estou supondo que o DiskSerial.dll sempre lê o drive onde o Windows está instalado (C:). Mesmo que o aplicativo seja executado em outro HD (F:), ele lê o C:.

A minha suposição está correta ?

Número serial do HD - Anti cópia

Enviado: 06 Ago 2012 22:38
por sygecom
Olá Hasse,
Você está certo, ele sempre pega o primeiro HD instalado na: IDE 0 ou: SATA 0, se é C:\ ou D:\ não faz diferença mas o resultado no mesmo micro sempre será o mesmo, pode formatar o HD que será o mesmo, se mudar o HD da IDE 0 ou SATA 0 vai mudar o resultado.

Número serial do HD - Anti cópia

Enviado: 07 Ago 2012 22:19
por Hasse
Olá Leonardo.

Obrigado pela informação. Era o que eu suspeitava.

Número serial do HD - Anti cópia

Enviado: 29 Mar 2013 09:53
por lucimauro
Alguem pode disponibilizar o link para baixar essa DLL?


Desde ja agradeço.