Numero da CMOS
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
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
Curtidas 0
Respostas
Khundalini
08/11/2006
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
Sds.,
Rubem Rocha
Manaus, AM
GOSTEI 0
Khundalini
08/11/2006
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
Sds.,
Rubem Rocha
Manaus, AM
GOSTEI 0
Nigro
08/11/2006
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.
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.
GOSTEI 0
Martins
08/11/2006
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.
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.
GOSTEI 0
Siam
08/11/2006
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.GOSTEI 0
Martins
08/11/2006
[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.
GOSTEI 0
Martins
08/11/2006
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.
GOSTEI 0
Adriano Santos
08/11/2006
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.
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.
GOSTEI 0
Siam
08/11/2006
[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]
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]
GOSTEI 0
Martins
08/11/2006
[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!
GOSTEI 0
Nightshade
08/11/2006
pode fzr isso via assembler, com a chamada asm
asm
begin
end;
com codigo assembler tu faz isso q tu ker
asm
begin
end;
com codigo assembler tu faz isso q tu ker
GOSTEI 0