回 帖 发 新 帖 刷新版面

主题:获得硬盘序列号编译后运行出错

以下是版主QB45写的源码,编译后运行屏幕停留在“本硬盘的序列号为”这一行字中,而且死机。哪位兄弟能告诉为什么?或者有更好的获得硬盘序列号办法?

获得硬盘序列号(原程序)
本程序在必须在DOS下运行,我在qb4.5版本下运行通过
OUT &H1F6, &HA0
OUT &h1F2,1
OUT &H1F3, 1
OUT &h1F4,1
OUT &h1F5,1
OUT &H1F7, &HEC
DO WHILE flag <> &H58
flag = INP(&H1F7)
if inkey$=chr$(27) then
print "无法获得硬盘序列号"
end
end if
LOOP
re$ = SPACE$(18)
FOR i% = 1 TO 18
READ a$
H$ = CHR$(VAL("&H" + a$))
MID$(re$, i%, 1) = H$
NEXT i%
duan% = varSEG(re$):offe% = SADD(re$)
DEF SEG = duan%
print "本硬盘的序列号为 ";
FOR i = 1 TO 16
CALL Absolute(r%, offe%)
r1% = r% AND &HFF
r2% = (r% AND &HFF00) / &H100
IF i > 9 AND i < 15THEN PRINT CHR$(r1%); CHR$(r2%);
NEXT i
DEF SEG
END
DATA 55,89,e5,ba,f0,01,ed,86,e0,8b,5e,06,89,07,5d,ca,02 ,00

回复列表 (共8个回复)

沙发

请问你是在win98的dos还是winxp的dos?
你的硬盘是否接在主IDE口上的主口上??

板凳

在MSDOS7.1下。硬盘是接在主IDE口上的主口上的。

3 楼

版主请解决一下吧。
另:moz等大侠也请出手或者另写一段代码。谢谢!

4 楼

你把我估计过高了
不过我懂得去找Google
[url=http://www.ddvip.net/program/delphi/index6/236.htm]这是网页的介绍[/url]
[url=http://www.ddvip.net/program/delphi/index6/three/imgD/32.rar]这是程序下载的链接[/url]

5 楼

谢谢moz!可是我要的就是QB方面的源码,非常可惜的是版主QB45写的源码在QB7.1下编译运行出错,各位能否修改一下呢?

6 楼

[url=http://www.ddvip.net/program/masm/index2/17.htm]http://www.ddvip.net/program/masm/index2/17.htm[/url]

[url=http://zclfly.wordpress.com/2005/11/09/%E5%85%B3%E4%BA%8E%E7%A1%AC%E7%9B%98%E5%BA%8F%E5%88%97%E5%8F%B7%EF%BC%8D%E8%BD%AC%E8%BD%BD/]http://zclfly.wordpress.com/2005/11/09/%E5%85%B3%E4%BA%8E%E7%A1%AC%E7%9B%98%E5%BA%8F%E5%88%97%E5%8F%B7%EF%BC%8D%E8%BD%AC%E8%BD%BD/[/url]

[url=http://www.china-askpro.com/msg9/qa94.shtml]http://www.china-askpro.com/msg9/qa94.shtml[/url]

7 楼

这个代码我在DOS下用qb45编译以后,在5台电脑上做过实验,只有一台老奔2的电脑无法读出硬盘序列号,一读就死机,而且用专门读硬盘序列号的软件读它也读不出来,这个我估计就与主板有关系了!
这样的程序与硬件的关系太密切了,如果端口不对,就无法读出正确的数据,比如如果你接在别的IDE口,端口号就变了,有很大局限性
所以在编程中一般不提倡对硬件编程!

8 楼

在CMOS,BIOS设置里可以查看得到的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册