Numero Serial do HD

Delphi

13/01/2004

Estou com problema no meu numero de serie dos meus programas, e para corrigi-lo, presciso pegar o numero de serie do HD. Utilizei aquela função SERIALNUM(), mas nao funcionou, ele esta mudando o numero. Hora aparece um numero, hora outro.


Estou prescisando com muita urgente.


Danilo :(


Baliza

Baliza

Curtidas 0

Respostas

Luineumann

Luineumann

13/01/2004

tenho essa sintaxe para a função serialnum ... veja se bate com a sua

talvez o problema seja com a versão do windows (98, xp, etc)

Function SerialNum(FDrive:String) :String;
Var
Serial:DWord;
DirLen,Flags: DWord;
DLabel : Array[0..11] of Char;
begin
Try GetVolumeInformation(PChar(FDrive+´:\´),dLabel,12,@Serial,DirLen,Flags,nil,0);
Result := IntToHex(Serial,8);
Except Result :=´´;
end;
end;


GOSTEI 0
Baliza

Baliza

13/01/2004

É a mesma função......já testei no windows NT/98 total de 3 máquinas e retorna numeros que nao sao permanentes....



obrigado......


GOSTEI 0
Maicongabriel

Maicongabriel

13/01/2004

É esta a sua função ?

function SerialNum(FDrive : String) : String;
var
  Serial,
  DirLen,
  Flags  : DWord;
  DLabel : Array[0..11] of Char;
begin
  try
    GetVolumeInformation( PChar(FDrive + ´:\´),
                          dLabel, 12, @Serial,
                          DirLen, Flags, nil, 0 );
    Result := IntToHex(Serial, 8);
  except
    Result := ´´;
  end;
end;


Aqui ela funciona bem !
Qual a versão do Windows da maquina na qual você esta testando ?


GOSTEI 0
Maicongabriel

Maicongabriel

13/01/2004

OPss , página desatualizada :oops:

Você disse que esta testando em 3 máquina, mas me deculpe a pergunta, os numeros não são igual entre as 3 ?
Ou na mesma máquina o resultado se modifica ?


GOSTEI 0
Salupe

Salupe

13/01/2004

Não sei se é esse o seu problema, mas se você estiver usando um programa em rede e com esta função tentar pegar o serial de um dos terminais e o executável estiver somente no servidor o número que ela pega será realmente variável.
Se for isso só o que você tem a fazer e colocar o executável em cada máquina.
Tirando isso o serial só muda se você formatar a máquina.

Falo Chefia.


GOSTEI 0
Baliza

Baliza

13/01/2004

OPss , página desatualizada :oops: Você disse que esta testando em 3 máquina, mas me deculpe a pergunta, os numeros não são igual entre as 3 ? Ou na mesma máquina o resultado se modifica ?


Nas 3 máquinas aparecem numeros diferentes, só que eles nao permanecem...ficam modificando quando vc fecha o aplicativo e abre novamente.


GOSTEI 0
Baliza

Baliza

13/01/2004

Não sei se é esse o seu problema, mas se você estiver usando um programa em rede e com esta função tentar pegar o serial de um dos terminais e o executável estiver somente no servidor o número que ela pega será realmente variável. Se for isso só o que você tem a fazer e colocar o executável em cada máquina. Tirando isso o serial só muda se você formatar a máquina. Falo Chefia.


Amigão..... eu quero o numero serial do HD e nao aquele numero do vol do HD, aquele XXXX-XXXX....... certo.


GOSTEI 0
Baliza

Baliza

13/01/2004

Presciso desta porque?!!!

Teve um cliente meu que clonou um hd para outro que tinha meu sistema. E com isso aquele numero do Volume vai junto, quando vc faz uma imagem do disco rígido.. Ai vcs já sabem do que isso pode acarretar.....varias e várias imagens....são várias ...várias piratarias..?????!!!!! :(


Presciso de ajuda!


GOSTEI 0
Salupe

Salupe

13/01/2004

E Você acha que a tua rotina pega o que? Camarada


GOSTEI 0
Baliza

Baliza

13/01/2004

E Você acha que a tua rotina pega o que? Camarada



pensava que esta função serialnum() retornaria o numero serial do HD.
NUMERO DE FÁBRICA.


GOSTEI 0
Salupe

Salupe

13/01/2004

No próprio comando que você pega o número já diz

Get[b]Volume[/b]Information


GOSTEI 0
Baliza

Baliza

13/01/2004

No próprio comando que você pega o número já diz Get[b:50ca3c57e1]Volume[/b:50ca3c57e1]Information



Não entendi amigo.....??????? :?:


GOSTEI 0
Salupe

Salupe

13/01/2004

Sinto muito discordar de você, mas esta tua rotina pega o número serial do volume do HD (como você diz), porque realmente a cada formatação ou se você pegar pelo programa (executável) estando em outro computador o número irá mudar.
Ou seja, esta rotina não pega o que você está querendo e da forma que você quer.


GOSTEI 0
Nigro

Nigro

13/01/2004

Até onde eu sei o Windows 2000 e o 98 têm o endereço de leitura do serial de fábrica em endereços diferentes. sendo preciso fazer uma função que deetecte o Windows utilizado, antes...


GOSTEI 0
Baliza

Baliza

13/01/2004

Até onde eu sei o Windows 2000 e o 98 têm o endereço de leitura do serial de fábrica em endereços diferentes. sendo preciso fazer uma função que deetecte o Windows utilizado, antes...



Vamos lá amigo.....me ajude, acho que vc me entendeu!!!!!!


GOSTEI 0
Marco Salles

Marco Salles

13/01/2004

Tópico Errado.Desculpe-me


GOSTEI 0
Nigro

Nigro

13/01/2004

Enviei uma MP


GOSTEI 0
Marco Salles

Marco Salles

13/01/2004

Balisa Escreveu:´Nas 3 máquinas aparecem numeros diferentes, só que eles nao permanecem...ficam modificando quando vc fecha o aplicativo e abre novamente´

Marco :Altere Um ´Pouco´ a Função ´SerialNum´ e o Número Do ´Volume´
Do Hd Ficara Fixo.A Princípio Se o Usuário Formatar a Máquina Ou
Trocar o Sistema Operacional Este Númerio Irá Mudar.Mas aí Nada
Que Uma Boa Assistência Não Resolva.A Alteração Que Sugiro é
Simples e Pode Dar Resultado.

function SerialNum : String;
var
Serial,
DirLen,
Flags : DWord;
DLabel : Array[0..11] of Char;
begin
try
GetVolumeInformation(´C:\´),
dLabel, 12, @Serial,
DirLen, Flags, nil, 0 );
Result := IntToHex(Serial, 8);
except
Result := ´´;
end;
end;


GOSTEI 0
Baliza

Baliza

13/01/2004

[quote:c0cb5cb161=´Marco Salles´]Balisa Escreveu:´Nas 3 máquinas aparecem numeros diferentes, só que eles nao permanecem...ficam modificando quando vc fecha o aplicativo e abre novamente´

Marco :Altere Um ´Pouco´ a Função ´SerialNum´ e o Número Do ´Volume´
Do Hd Ficara Fixo.A Princípio Se o Usuário Formatar a Máquina Ou
Trocar o Sistema Operacional Este Númerio Irá Mudar.Mas aí Nada
Que Uma Boa Assistência Não Resolva.A Alteração Que Sugiro é
Simples e Pode Dar Resultado.

function SerialNum : String;
var
Serial,
DirLen,
Flags : DWord;
DLabel : Array[0..11] of Char;
begin
try
GetVolumeInformation(´C:\´),
dLabel, 12, @Serial,
DirLen, Flags, nil, 0 );
Result := IntToHex(Serial, 8);
except
Result := ´´;
end;
end;[/quote:c0cb5cb161]

Cara! retornou o numero de serie do HD.....quero capturar o ID de fabrica>>??????


GOSTEI 0
Marco Salles

Marco Salles

13/01/2004

Balisa Escreveu :Estou com problema no meu numero de serie dos meus programas, e para corrigi-lo, presciso pegar [color=red:3f71c8b04d]o numero de serie do HD.[/color:3f71c8b04d] Utilizei aquela função SERIALNUM(), mas nao funcionou, ele esta mudando o numero. Hora aparece um numero, hora outro.

Balisa Escreveu:Cara! retornou o numero de serie do HD.....[color=red:3f71c8b04d]quero capturar o ID de fabrica>>??????[/color:3f71c8b04d]

Eu Não Sugeri O Id De Fabrica, Eu Apenas Sugeri Como Fazer Para O Numero De Série Ficar Fixo.[color=red:3f71c8b04d]Que Foi a Sua Primeira Queixa[/color:3f71c8b04d]. Achei Que Voce Conseguindo Fixar o Numero De Série Resolveria Em Partes Teu Problema.Levantei Ainda Que Este Número Mudaria Na Formatação e/ou Mudanca Do S.O.Mas Aí Seria Por Conta Do Usuário e Voce Deveria Efetuar Uma Manutenção.

P:s O Tópico Que V.c Quer O ´I.D De Fábrica´ é Outro Tópico.Eu Não
Respondi O Outro Tópico.Falei.


GOSTEI 0
Baliza

Baliza

13/01/2004

[quote:3639e56b66=´Marco Salles´]Balisa Escreveu :Estou com problema no meu numero de serie dos meus programas, e para corrigi-lo, presciso pegar [color=red:3639e56b66]o numero de serie do HD.[/color:3639e56b66] Utilizei aquela função SERIALNUM(), mas nao funcionou, ele esta mudando o numero. Hora aparece um numero, hora outro.

Balisa Escreveu:Cara! retornou o numero de serie do HD.....[color=red:3639e56b66]quero capturar o ID de fabrica>>??????[/color:3639e56b66]

Eu Não Sugeri O Id De Fabrica, Eu Apenas Sugeri Como Fazer Para O Numero De Série Ficar Fixo.[color=red:3639e56b66]Que Foi a Sua Primeira Queixa[/color:3639e56b66]. Achei Que Voce Conseguindo Fixar o Numero De Série Resolveria Em Partes Teu Problema.Levantei Ainda Que Este Número Mudaria Na Formatação e/ou Mudanca Do S.O.Mas Aí Seria Por Conta Do Usuário e Voce Deveria Efetuar Uma Manutenção.

P:s O Tópico Que V.c Quer O ´I.D De Fábrica´ é Outro Tópico.Eu Não
Respondi O Outro Tópico.Falei.[/quote:3639e56b66]

Obrigado amigo......


GOSTEI 0
Marco Salles

Marco Salles

13/01/2004

Disponha Amigo....


GOSTEI 0
POSTAR