中国IT动力,最新最全的IT技术教程
最新100篇 | 推荐100篇 | 专题100篇 | 排行榜 | 搜索 | 在线API文档
首 页 | 程序开发 | 操作系统 | 软件应用 | 图形图象 | 网络应用 | 精文荟萃 | 教育认证 | 硬件维护 | 未整理篇 | 站长教程
ASP JS PHP工程 ASP.NET 网站建设 UML J2EESUN .NET VC VB VFP 网络维护 数据库 DB2 SQL2000 Oracle Mysql
服务器 Win2000 Office C DreamWeaver FireWorks Flash PhotoShop 上网宝典 CorelDraw 协议大全 网络安全 微软认证
硬件维护  CPU  主板  硬盘  内存  显卡  显示器  键盘鼠标  声卡音箱  打印机  机箱电源  BIOS  网卡  C#  Java  Delphi  vs.net2005
  当前位置:> 程序开发 > 编程语言 > Visual Basic > 综合文章
发现之旅(1):VB最简单的磁盘直读的代码
作者:guoyong_cy 时间:2006-08-05 20:10 出处:programfan.com 责编:LOKI
              摘要:暂无
copy right guoyong_cy (2006)

精通API的朋友可能都知道CreateFile可以用来打开很多东西,比如说硬盘之类,而且在用它们的时候可能对一大堆函数和参数已经伤透了脑筋。猜想vb自带的语句"Open"也是由createfile编写的,但不知道有多少人想到用open 来打开硬盘?!(经过网上查找,没有一句类似的代码)
(以下代码在win2000、Fat16,32文件系统、VisualBasic6.0测试成功,window98肯定不行,其他系统没试过)
因为本人一直都用windows98,最近刚装了个2000,就测试用open来实现逻辑盘直读(光盘和其他东西也可以,不过有时要出问题)。注:其实这里并不是直接访问硬盘(win2000等是不允许应用程序这样做的),还是通过了文件系统,只不过文件和我们通常见到的不同而已。
其中一代码基本如下
dim MyN(511) as byte
Open "\\.\c:" for binary as #1
open "\\.\h:" for binary as #2
  do while not eof(1)'实际上这句在这里没什么用
    get #1,,MyN
    put #2,,MyN
  loop
close
请在以上适当位置加上doevents和控制退出的代码
其中MyN的长度必须是512的倍数,读取起始位置必须是512倍数+1(C语言中就是512倍数)
以上代码实现将c盘的东西直接读出并写到h盘
(本代码将把h盘原来数据清空,请小心测试,责任自负)
对于系统可读取的盘(已经格式化过了的),用open几乎可以做任何操作,甚至在win2000下把系统盘(c:)写掉(请不要用此来搞破坏活动哈)。
如果写入的数据都是0,那么该盘将成为“没格式化的盘”,有点象低格,在这种情况下只要close掉文件,用open将不能再打开,而改用createfile仍然可以操作
用本语句已经实现恢复格式化前盘上的数据、格式化盘(因为只用open没法读取扇区和磁道数,只有自己设定值,而且前提是盘上已经有了FAT)、恢复已删除的文件、删除正在运行的程序文件、光盘直读,相信还可以做其他事,当然做个病毒也可以, 呵呵。有兴趣的朋友可以测试一下看能不能打开其他设备。
本来想用Open做个在win2000下的类似ghost的东西,却发现支持文件长度只有Long,晕,暂时还没想到办法(不过还是用c语言做安全,用这个系统可能要报废)目前在这方面的处理上我倾向于用open,毕竟用createfile太繁了,还要配合一堆函数和参数,实在没办法再考虑它吧!

本主题取名为“发现之旅”,故希望大家把自己发现特别的代码发表出来,互相学习!另外这些文章开头都是VB,只是因为这里人最多,初学者也最多,为了提高大家对编程的兴趣,所以在这里发。用其他语言也很容易实现。
(盘、最简单、直读、Open、\\.\、CreateFile、DeviceIoControl、VB格式化盘)
关闭本页
 
首页 | 投资与合作 | 服务条款 | 隐私政策 | 收藏本站 | 设为首页 | 新用户注册 | 免责声明 | 使用帮助
Copyright ©2005-2008 chinaitpower.com All rights reserved. www.chinaitpower.com 版权所有