回 帖 发 新 帖 刷新版面

主题:请def进来,看看!

以下的是你在http://qbdos.51.net修改的备份CMOS代码:

SUB C.ButtonClick (NWin, Inx)
Sel = NWin * 100 + Inx
SELECT CASE Sel
CASE 1:
FF = FREEFILE
OPEN "CMOS.DAT" FOR RANDOM AS #FF LEN=1
FIELD FF,1 AS A$
FOR i%=1 TO 128
OUT &H70, i%-1
a%=INP(&H71)
LSET A$=CHR$(A%)
PUT #FF,I
NEXT i%
CLOSE #FF
MsgBox "O","提示","COMS 备份成功!"
END IF

CASE 2:
FF = FREEFILE
OPEN "COMS.DAT" FOR RANDOM AS #FF LEN=1
FIELD FF,1 AS A$
FOR i%=1 TO 128
OUT &H70, i%-1
GET #FF,I%
b%=ASC(a$)
OUT &H71,b%
NEXT i%
CLOSE #FF
MsgBox "O","提示","COMS 还原成功!"
END SELECT
-----------------------------------------------------------
我经过试用,还原CMOS为什么成了清除CMOS了?
我先用以上代码编译后先备份CMOS,然后在恢复CMOS,重起电脑,
CMOS就成了主板出厂设置,我自己设置的全部复原了!
是不是这段代码有问题还是我自己的问题?

回复列表 (共9个回复)

沙发

'我只好把我的交上了;
'我的CMOS工具[em1];
'含有不破坏日期时间的破解CMOS密码和还原方法[em11]。
'================================
DIM cmd AS STRING * 101
DIM PARAS(10) AS STRING
DIM temp AS STRING * 1
cmd = COMMAND$
offset% = VARPTR(cmd)
segment% = VARSEG(cmd)
DEF SEG = segment%
n = 0
FOR x% = 0 TO 100
  temp = CHR$(PEEK(offset% + x%))
  IF temp <> " " THEN
    PARAS(n) = PARAS(n) + temp
  ELSE
    IF CHR$(PEEK(offset% + x% + 1)) <> " " THEN
      n = n + 1
    END IF
  END IF
NEXT x%
FOR PARAS.A = 2 TO 10
  IF PARAS(PARAS.A) <> "" THEN
    PRINT "Too many paraments"
    END
  END IF
NEXT PARAS.A
SELECT CASE PARAS(0)
  CASE "/B"
    ON ERROR GOTO BAKERR
    OPEN PARAS(1) FOR RANDOM AS #1 LEN = 1
    FIELD 1, 1 AS A$
    FOR I = 1 TO 128
      OUT 112, I - 1
      B = INP(113)
      LSET A$ = CHR$(B)
      PUT 1, I
    NEXT
    CLOSE #1
    PRINT "Backup CMOS to "; PARAS(1); " OK!"
    PRINT
    END
BAKERR:
      PRINT "Backup CMOS to "; PARAS(0); " Error!"
      PRINT
      IF FREEFILE <> 1 THEN CLOSE #1
      END
    RESUME NEXT
  CASE "/R"
    ON ERROR GOTO RESERR
    OPEN PARAS(1) FOR RANDOM AS #1 LEN = 1
    FIELD 1, 1 AS A$
    FOR I = 17 TO 128
      GET 1, I
      OUT 112, I - 1
      B = INP(113)
      OUT 113, B
    NEXT
    CLOSE #1
    PRINT "Restore CMOS from "; PARAS(1); " OK!"
    PRINT
    END
RESERR:
      PRINT "Restore CMOS from "; PARAS(0); " Error!"
      PRINT
      IF FREEFILE <> 1 THEN CLOSE #1
      END
    RESUME NEXT
  CASE "/C"
    OUT &H70,&H11
    OUT &H71,&H14
  CASE ELSE
    PRINT "CMOS /B filename  Backup your CMOS"
    PRINT "CMOS /R filename  Restore your CMOS"
    PRINT "CMOS /C           Clean CMOS Password"
    PRINT
    PRINT "Copyright Programfan.Def 2005"
    PRINT "  All Rights Reserved"
    PRINT
END SELECT

板凳

备份和还原好象不起作用哦!

3 楼

我觉得起
不知道你是悲愤后立即还原/是用Wengier的MS-DOS 7.10

4 楼

我又试了几遍,还是不起作用啊!
我先在DOS下键入: CMOS.EXE /R CMOS.DAT  (备份)
再重起计算机,进入CMOS,把系统时间2005年改为2006年,保存,重起计算机
进入DOS
键入:  CMOS.EXE /R CMOS.DAT  (恢复)
重起计算机,结果系统时间还是2006年,没被还原到2005年,说明不起作用啊!

5 楼

因为他没有破坏日期时间,这是方便用户的!
不然你把其他设置改了旧行。
你没看见上面的提示啊????????????????

6 楼

其他设置也一样啊,我改了启动顺序,把原先的CDROM ,HDDD ,A,改为:HDD,CDROM,A
结果恢复以后还是没恢复到第一个设置,也不起作用啊.

7 楼

NT核心的系统(NT/2000/XP/2003)是不可以用这种方法改写CMOS的,如果装的是98应该有用

8 楼

可是我是在DOS7.1下的啊.

9 楼

我先视视

我来回复

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