Fórum Numero da CMOS #332815

08/11/2006

0

Amigos,

preciso da ajuda des vc´s pra descobrir o numero da CMOS. Estou desenvolvendo uma rotina de proteção aos meus sistemas, e ja testei varios itens, o serial do HD que muda a cada formatação, mas a CMOS não muda, então se alguem tiver e poder me ajudar, agradecerei.

Obrigado


Antonio marcos Chaves
amnchaves@hotmail.com


Amchaves

Amchaves

Responder

Posts

08/11/2006

Khundalini

Com uma aplicação Delphi você não vai conseguir isso. Os dados do setup do micro ficam armazenados em uma memória do tipo CMOS, e o acesso à essa memória se dá através de portas de I/O. Em Windows 9x/ME, isso até pode ser possível, mas em ambientes operacionais NT (NT/2000/XP) o acesso direto à portas de I/O, porquê o sistema operacional impõe rígidas regras de acesso aos recursos de baixo nível do computador. É por isso, inclusive, que uma dica muito da sua falida que anda pela internet pra checar se a impressora está online é furada! Para acessar portas de I/O, você precisa desenvolvolver em C/C++ um driver do tipo VxD (para Win 9x/ME) ou WDM (para NT/2000/XP) que possa ser chamada via uma aplicação qualquer (seja ela em VB, Delphi, Visual FoxPro, etc.). Só assim, você poderá acessar os dados do setup do micro. Outra coisa, se está pensando em colher informações sobre como escrever um driver VxD ou WDM com Delphi, esqueça! O Delphi não possui arquitetura para isso!

Sds.,
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

08/11/2006

Khundalini

Com uma aplicação Delphi você não vai conseguir isso. Os dados do setup do micro ficam armazenados em uma memória do tipo CMOS, e o acesso à essa memória se dá através de portas de I/O. Em Windows 9x/ME, isso até pode ser possível, mas em ambientes operacionais NT (NT/2000/XP) o acesso direto à portas de I/O, porquê o sistema operacional impõe rígidas regras de acesso aos recursos de baixo nível do computador. É por isso, inclusive, que uma dica muito da sua falida que anda pela internet pra checar se a impressora está online é furada! Para acessar portas de I/O, você precisa desenvolvolver em C/C++ um driver do tipo VxD (para Win 9x/ME) ou WDM (para NT/2000/XP) que possa ser chamada via uma aplicação qualquer (seja ela em VB, Delphi, Visual FoxPro, etc.). Só assim, você poderá acessar os dados do setup do micro. Outra coisa, se está pensando em colher informações sobre como escrever um driver VxD ou WDM com Delphi, esqueça! O Delphi não possui arquitetura para isso!

Sds.,
Rubem Rocha
Manaus, AM


Responder

Gostei + 0

08/11/2006

Nigro

Você pode ver no site do Torry, ou Lib.Seven, se eles possuem como detectar o serial físico do HD, isso é possível sim no Delphi.
Quanto ao CMOS, além dos argumentos postados aqui o endereço dos dados varia a cada fabricante, mas o serial físico do HD é possível e provavelmente aqui no fórum mesmo já tenha.


Responder

Gostei + 0

09/11/2006

Martins

Realmente no Windows NT/XP não será possível o acesso a baixo nível, mas existe uma DLL Inpout32.dll disponível para download na URL http://www.logix4u.net/inpout32.htm.

Nesta DLL já existem rotinas: in e out que servem para acessar portas paralelas, não sei se existem outras funções mas vc pode pesquisar a respeito ou ver com algum colega um código em C/C++ q faça o q vc deseja e então escrever uma DLL para ser usada por seu sistema.


Responder

Gostei + 0

09/11/2006

Siam

Realmente no Windows NT/XP não será possível o acesso a baixo nível...
No WMI vc tem o objeto ´Win32_Processor.DeviceID´ e nele a propriedade ´ProcessorID´ do tipo string. Acho que isso serve.


Responder

Gostei + 0

10/11/2006

Martins

[quote:53e36a0799=´Martins´]Realmente no Windows NT/XP não será possível o acesso a baixo nível...
No WMI vc tem o objeto ´Win32_Processor.DeviceID´ e nele a propriedade ´ProcessorID´ do tipo string. Acho que isso serve.[/quote:53e36a0799]

Usando Windows Management Instrumentation ele pode ter a informação q precisa?.

Não sei muito sobre o Assunto, mas até onde sei, ele pode conseguir algo como número do BIOS.

Mas mesmo assim valeu pela informação.


Responder

Gostei + 0

10/11/2006

Martins

Não sei muito sobre o Assunto, mas até onde sei, ele pode conseguir algo como número do BIOS.


Leia-se

Não sei muito sobre o Assunto, não sei se ele pode conseguir algo como número do BIOS.



Responder

Gostei + 0

10/11/2006

Adriano Santos

Galera, até onde sei o Delphi não possui arquitetura pra isso, porquê?
Para acessar dados de baixo nível como o endereço físico do número da BIOS, gravar algo no SETUP e talz é necessário um nível de pemissão ring0 (existem três níveis ring0, ring1 e ring2), porém o Delphi trabalha somente com ring2. Ou seja, seria necessário desenvolver a rotina apenas em C que te dá acesso total ao ring0.

Pra se ter uma idéia, todos os drivers são desenvolvidos em C. Driver de vídeo, som, impressoras e etc.

É isso.


Responder

Gostei + 0

10/11/2006

Siam

[quote:9d09dbdda7=´Adriano Santos´]Galera, até onde sei o Delphi não possui arquitetura pra isso, porquê?
Para acessar dados de baixo nível como o endereço físico do número da BIOS, gravar algo no SETUP e talz é necessário um nível de pemissão ring0 . . .[/quote:9d09dbdda7]Bom, citei WMI não para gravar mas sim para ler as informações. Acredito que seja isso que o colega queira. Eu por exemplo no XP já consegui ler o serial físico de HDs IDE e SATA.
Uma explicação melhor está em: [url]https://www.devmedia.com.br/articles/viewcomp.asp?comp=651[/url]


Responder

Gostei + 0

10/11/2006

Martins

[quote:d426b4cf2c=´Adriano Santos´]Galera, até onde sei o Delphi não possui arquitetura pra isso, porquê? Para acessar dados de baixo nível como o endereço físico do número da BIOS, gravar algo no SETUP e talz é necessário um nível de pemissão ring0 . . .
Bom, citei WMI não para gravar mas sim para ler as informações. Acredito que seja isso que o colega queira. Eu por exemplo no XP já consegui ler o serial físico de HDs IDE e SATA.
Uma explicação melhor está em: [url]https://www.devmedia.com.br/articles/viewcomp.asp?comp=651[/url][/quote:d426b4cf2c]

Certo Galera, ele quer ler o número da BIOS, sabemos q ele pode fazer isso usando C, o colega [b:d426b4cf2c]siam[/b:d426b4cf2c] citou o [b:d426b4cf2c]WMI[/b:d426b4cf2c] q já foi abordado em um artigo pelo colega [b:d426b4cf2c]Rubens[/b:d426b4cf2c] de Manaus-AM, agora cabe ao nosso colega trilhar o caminho e qualquer dificuldade solicitar ajuda. Eu particularmente agradeço a participação de todos até aqui, pois tem servido para todos q participam e visualizam o tópico tb.

boa sorte!


Responder

Gostei + 0

10/11/2006

Nightshade

pode fzr isso via assembler, com a chamada asm

asm
begin

end;

com codigo assembler tu faz isso q tu ker


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar