请问vc中如何取得硬盘信息,在线等待

gully 2003-08-20 03:02:26
如: 挂接了几块硬盘,
usb移动硬盘信息
...全文
772 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzw922 2003-09-05
  • 打赏
  • 举报
回复
DeviceIoControl一般只针对2000及以上版本
98下需使用其它代码(譬如中断)进行读写
Skt32 2003-09-04
  • 打赏
  • 举报
回复
http://www.vckbase.com/document/viewdoc.asp?id=706

http://www.vckbase.com/code/downcode.asp?id=1985
Skt32 2003-09-04
  • 打赏
  • 举报
回复
一个获得硬盘物理信息的类
作者:广西北流中学160班 聂华闻

下载本文示例源代码

介绍:
有很多时候我需要知道机器的一些物理信息(比如激活技术),所以我就利用放高考假的时间,封装了一个可以获得硬盘的物理信息的类,方便大家。此类在我的机器上测试效果如下:



CGetMachineInfo类简介:

类名: CGetMachineInfo
类中的一些要说明的函数: 功能
int ReadPhysicalDriveInNT (void) 在NT内核系统下读取硬盘的物理信息
int ReadDrivePortsInWin9X (void) 在9X内核系统下读取硬盘的物理信息
int ReadIdeDriveAsScsiDriveInNT (void) 读入NT系统下的SCSI硬盘的物理信息
BOOL ReturnInfo(int drive, DWORD diskdata [256]) 收集磁盘物理信息主函数
char *ConvertToString (DWORD, int , int )
把整型变量转换为字符串
CGetMachineInfo(void); 类的构造函数,用于区分系统内核然后自动开始收集信息
类中的一些要说明的变量: 变量说明
CString str_DN_Modol 硬盘的出厂序号
CString str_DN_Serial 驱动器的连续序号
CString str_DN_ControllerRevision 硬盘驱动版本
CString str_HardDeskSize 硬盘的大小(bytes)
CString str_HardDeskBufferSize 硬盘缓存大小(bytes)
CString str_HardDeskType 硬盘类型
CString str_Controller 说明硬盘是主动盘还是辅动盘
CString str_HardDesk_Form 说明所取的信息来源于电脑上的第几个硬盘

使用CGetMachineInfo库:

我使用了一个基于对话框的程序测试了这个类,我在对话框的初始化函数里构造了这个对象,因为类的构造函数会自动收集信息的所以构造了一个类变量后我们就可以直接的访问它所取得的信息就可以了。代码如下:

BOOL CHardDeskInfoDlg::OnInitDialog()
{
CDialog::OnInitDialog(); CGetMachineInfo m_Info; //构造这个类的变量
SetDlgItmText(IDC_HARDDESK_ID,m_Info.str_DN_Modol);//直接访问它收集到的信息
SetDlgItemText(IDC_STATIC_SERIAL,m_Info.str_DN_Serial);
SetDlgItemText(IDC_STATIC_CR,m_Info.str_DN_ControllerRevision);
SetDlgItemText(IDC_HARDDESK_SIZE,m_Info.str_HardDeskSize+" bytes");
SetDlgItemText(IDC_BUFFER_SIZE,m_Info.str_HardDeskBufferSize+" bytes");
SetDlgItemText(IDC_HARDDESK_TYPE,m_Info.str_HardDeskType);
SetDlgItemText(IDC_STATIC_Controller,m_Info.str_Controller);
......//

return TRUE; // 除非设置了控件的焦点,否则返回 TRUE
}
结尾:

这个类是很容易使用的,详细的大家可以看源代码(匆促中也许会有错,请各位哥姐多包含)。

测试程序编译通过 VC++ 7.0,类可以用于...大概5.0以上所有的VC版本吧?
howtotell 2003-08-31
  • 打赏
  • 举报
回复
// IDE设备IOCTL输出数据结构
typedef struct _SENDCMDOUTPARAMS
{
DWORD cBufferSize; // 缓冲区字节数
DRIVERSTATUS DriverStatus; // 驱动程序返回状态
BYTE bBuffer[1]; // 输入缓冲区(此处象征性地包含1字节)
} SENDCMDOUTPARAMS, *PSENDCMDOUTPARAMS, *LPSENDCMDOUTPARAMS;

// IDE的ID命令返回的数据
// 共512字节(256个WORD),这里仅定义了一些感兴趣的项(基本上依据ATA/ATAPI-4)
typedef struct _IDINFO
{
USHORT wGenConfig; // WORD 0: 基本信息字
USHORT wNumCyls; // WORD 1: 柱面数
USHORT wReserved2; // WORD 2: 保留
USHORT wNumHeads; // WORD 3: 磁头数
USHORT wReserved4; // WORD 4: 保留
USHORT wReserved5; // WORD 5: 保留
USHORT wNumSectorsPerTrack; // WORD 6: 每磁道扇区数
USHORT wVendorUnique[3]; // WORD 7-9: 厂家设定值
CHAR sSerialNumber[20]; // WORD 10-19:序列号
USHORT wBufferType; // WORD 20: 缓冲类型
USHORT wBufferSize; // WORD 21: 缓冲大小
USHORT wECCSize; // WORD 22: ECC校验大小
CHAR sFirmwareRev[8]; // WORD 23-26: 固件版本
CHAR sModelNumber[40]; // WORD 27-46: 内部型号
USHORT wMoreVendorUnique; // WORD 47: 厂家设定值
USHORT wReserved48; // WORD 48: 保留
struct {
USHORT reserved1:8;
USHORT DMA:1; // 1=支持DMA
USHORT LBA:1; // 1=支持LBA
USHORT DisIORDY:1; // 1=可不使用IORDY
USHORT IORDY:1; // 1=支持IORDY
USHORT SoftReset:1; // 1=需要ATA软启动
USHORT Overlap:1; // 1=支持重叠操作
USHORT Queue:1; // 1=支持命令队列
USHORT InlDMA:1; // 1=支持交叉存取DMA
} wCapabilities; // WORD 49: 一般能力
USHORT wReserved1; // WORD 50: 保留
USHORT wPIOTiming; // WORD 51: PIO时序
USHORT wDMATiming; // WORD 52: DMA时序
struct {
USHORT CHSNumber:1; // 1=WORD 54-58有效
USHORT CycleNumber:1; // 1=WORD 64-70有效
USHORT UnltraDMA:1; // 1=WORD 88有效
USHORT reserved:13;
} wFieldValidity; // WORD 53: 后续字段有效性标志
USHORT wNumCurCyls; // WORD 54: CHS可寻址的柱面数
USHORT wNumCurHeads; // WORD 55: CHS可寻址的磁头数
USHORT wNumCurSectorsPerTrack; // WORD 56: CHS可寻址每磁道扇区数
USHORT wCurSectorsLow; // WORD 57: CHS可寻址的扇区数低位字
USHORT wCurSectorsHigh; // WORD 58: CHS可寻址的扇区数高位字
struct {
USHORT CurNumber:8; // 当前一次性可读写扇区数
USHORT Multi:1; // 1=已选择多扇区读写
USHORT reserved1:7;
} wMultSectorStuff; // WORD 59: 多扇区读写设定
ULONG dwTotalSectors; // WORD 60-61: LBA可寻址的扇区数
USHORT wSingleWordDMA; // WORD 62: 单字节DMA支持能力
struct {
USHORT Mode0:1; // 1=支持模式0 (4.17Mb/s)
USHORT Mode1:1; // 1=支持模式1 (13.3Mb/s)
USHORT Mode2:1; // 1=支持模式2 (16.7Mb/s)
USHORT Reserved1:5;
USHORT Mode0Sel:1; // 1=已选择模式0
USHORT Mode1Sel:1; // 1=已选择模式1
USHORT Mode2Sel:1; // 1=已选择模式2
USHORT Reserved2:5;
} wMultiWordDMA; // WORD 63: 多字节DMA支持能力
struct {
USHORT AdvPOIModes:8; // 支持高级POI模式数
USHORT reserved:8;
} wPIOCapacity; // WORD 64: 高级PIO支持能力
USHORT wMinMultiWordDMACycle; // WORD 65: 多字节DMA传输周期的最小值
USHORT wRecMultiWordDMACycle; // WORD 66: 多字节DMA传输周期的建议值
USHORT wMinPIONoFlowCycle; // WORD 67: 无流控制时PIO传输周期的最小值
USHORT wMinPOIFlowCycle; // WORD 68: 有流控制时PIO传输周期的最小值
USHORT wReserved69[11]; // WORD 69-79: 保留
struct {
USHORT Reserved1:1;
USHORT ATA1:1; // 1=支持ATA-1
USHORT ATA2:1; // 1=支持ATA-2
USHORT ATA3:1; // 1=支持ATA-3
USHORT ATA4:1; // 1=支持ATA/ATAPI-4
USHORT ATA5:1; // 1=支持ATA/ATAPI-5
USHORT ATA6:1; // 1=支持ATA/ATAPI-6
USHORT ATA7:1; // 1=支持ATA/ATAPI-7
USHORT ATA8:1; // 1=支持ATA/ATAPI-8
USHORT ATA9:1; // 1=支持ATA/ATAPI-9
USHORT ATA10:1; // 1=支持ATA/ATAPI-10
USHORT ATA11:1; // 1=支持ATA/ATAPI-11
USHORT ATA12:1; // 1=支持ATA/ATAPI-12
USHORT ATA13:1; // 1=支持ATA/ATAPI-13
USHORT ATA14:1; // 1=支持ATA/ATAPI-14
USHORT Reserved2:1;
} wMajorVersion; // WORD 80: 主版本
USHORT wMinorVersion; // WORD 81: 副版本
USHORT wReserved82[6]; // WORD 82-87: 保留
struct {
USHORT Mode0:1; // 1=支持模式0 (16.7Mb/s)
USHORT Mode1:1; // 1=支持模式1 (25Mb/s)
USHORT Mode2:1; // 1=支持模式2 (33Mb/s)
USHORT Mode3:1; // 1=支持模式3 (44Mb/s)
USHORT Mode4:1; // 1=支持模式4 (66Mb/s)
USHORT Mode5:1; // 1=支持模式5 (100Mb/s)
USHORT Mode6:1; // 1=支持模式6 (133Mb/s)
USHORT Mode7:1; // 1=支持模式7 (166Mb/s) ???
USHORT Mode0Sel:1; // 1=已选择模式0
USHORT Mode1Sel:1; // 1=已选择模式1
USHORT Mode2Sel:1; // 1=已选择模式2
USHORT Mode3Sel:1; // 1=已选择模式3
USHORT Mode4Sel:1; // 1=已选择模式4
USHORT Mode5Sel:1; // 1=已选择模式5
USHORT Mode6Sel:1; // 1=已选择模式6
USHORT Mode7Sel:1; // 1=已选择模式7
} wUltraDMA; // WORD 88: Ultra DMA支持能力
USHORT wReserved89[167]; // WORD 89-255
} IDINFO, *PIDINFO;
// SCSI驱动所需的输入输出共用的结构
typedef struct _SRB_IO_CONTROL
{
ULONG HeaderLength; // 头长度
UCHAR Signature[8]; // 特征名称
ULONG Timeout; // 超时时间
ULONG ControlCode; // 控制码
ULONG ReturnCode; // 返回码
ULONG Length; // 缓冲区长度
} SRB_IO_CONTROL, *PSRB_IO_CONTROL;

需要引起注意的是IDINFO第57-58 WORD (CHS可寻址的扇区数),因为不满足32位对齐的要求,不可定义为一个ULONG字段。Lynn McGuire的程序里正是由于定义为一个ULONG字段,导致该结构不可用。
howtotell 2003-08-31
  • 打赏
  • 举报
回复

// 将串中的字符两两颠倒
// 原因是ATA/ATAPI中的WORD,与Windows采用的字节顺序相反
// 驱动程序中已经将收到的数据全部反过来,我们来个负负得正
void AdjustString(char* str, int len)
{
char ch;
int i;

// 两两颠倒
for (i = 0; i < len; i += 2)
{
ch = str[i];
str[i] = str[i + 1];
str[i + 1] = ch;
}

// 若是右对齐的,调整为左对齐 (去掉左边的空格)
i = 0;
while ((i < len) && (str[i] == ' ')) i++;

::memmove(str, &str[i], len - i);

// 去掉右边的空格
i = len - 1;
while ((i >= 0) && (str[i] == ' '))
{
str[i] = '\0';
i--;
}
}

// 读取IDE硬盘的设备信息,必须有足够权限
// nDrive: 驱动器号(0=第一个硬盘,1=0=第二个硬盘,......)
// pIdInfo: 设备信息结构指针
BOOL GetPhysicalDriveInfoInNT(int nDrive, PIDINFO pIdInfo)
{
HANDLE hDevice; // 设备句柄
BOOL bResult; // 返回结果
char szFileName[20]; // 文件名

::sprintf(szFileName,"\\\\.\\PhysicalDrive%d", nDrive);

hDevice = ::OpenDevice(szFileName);

if (hDevice == INVALID_HANDLE_VALUE)
{
return FALSE;
}

// IDENTIFY DEVICE
bResult = ::IdentifyDevice(hDevice, pIdInfo);

if (bResult)
{
// 调整字符串
::AdjustString(pIdInfo->sSerialNumber, 20);
::AdjustString(pIdInfo->sModelNumber, 40);
::AdjustString(pIdInfo->sFirmwareRev, 8);
}

::CloseHandle (hDevice);

return bResult;
}

// 用SCSI驱动读取IDE硬盘的设备信息,不受权限制约
// nDrive: 驱动器号(0=Primary Master, 1=Promary Slave, 2=Secondary master, 3=Secondary slave)
// pIdInfo: 设备信息结构指针
BOOL GetIdeDriveAsScsiInfoInNT(int nDrive, PIDINFO pIdInfo)
{
HANDLE hDevice; // 设备句柄
BOOL bResult; // 返回结果
char szFileName[20]; // 文件名

::sprintf(szFileName,"\\\\.\\Scsi%d:", nDrive/2);

hDevice = ::OpenDevice(szFileName);

if (hDevice == INVALID_HANDLE_VALUE)
{
return FALSE;
}

// IDENTIFY DEVICE
bResult = ::IdentifyDeviceAsScsi(hDevice, nDrive%2, pIdInfo);

// 检查是不是空串
if (pIdInfo->sModelNumber[0] == '\0')
{
bResult = FALSE;
}

if (bResult)
{
// 调整字符串
::AdjustString(pIdInfo->sSerialNumber, 20);
::AdjustString(pIdInfo->sModelNumber, 40);
::AdjustString(pIdInfo->sFirmwareRev, 8);
}

return bResult;
}

Q 我注意到ATA/ATAPI里,以及DiskID32里,有一个“IDENTIFY PACKET DEVICE”指令,与“IDENTIFY DEVICE”有什么区别?

A IDENTIFY DEVICE专门用于固定硬盘,而IDENTIFY PACKET DEVICE用于可移动存储设备如CDROM、CF、MO、ZIP、TAPE等。因为驱动程序的原因,实际上用本例的方法,不管是IDENTIFY DEVICE也好,IDENTIFY PACKET DEVICE也好,获取可移动存储设备的详细信息,一般是做不到的。而且除了IDE硬盘,对SCSI、USB等接口的硬盘也不起作用。除非厂商提供的驱动支持这样的功能。

Q ATA/ATAPI有很多指令,如READ SECTORS, WRITE SECTORS, SECURITY, SLEEP, STANDBY等,利用上述方法,是否可进行相应操作?

A 应该没问题。但切记,要慎重慎重再慎重!

Q 关于权限问题,请解释一下好吗?

A 在NT/2000/XP下,administrator可以管理设备,上述两种访问驱动的方法都行。但在user身份下,或者登录到域后,用户无法访问PhysicalDrive驱动的核心层,但SCSI MINI-PORT驱动却可以。目前是可以,不知道Windows以后的版本是否支持。因为这肯定是一个安全隐患。

另外,我们着重讨论NT/2000/XP中DeviceIoControl的应用,如果需要在98/ME中得到包括硬盘序列号在内的更加详细的信息,请参考DiskID32。

[相关资源]
本文Demo源码:IdeDiskInfo.zip (25KB)
Lynn McGuire的 DiskID32.zip (30KB)
T13官方网站:http://www.t13.org/
bhw98的专栏:http://www.csdn.net/develop/author/netauthor/bhw98/
howtotell 2003-08-31
  • 打赏
  • 举报
回复

标题 实战DeviceIoControl 之四:获取硬盘的详细信息 bhw98(原作)

关键字 DeviceIoControl,ATA/ATAPI,硬盘序列号

Q 用IOCTL_DISK_GET_DRIVE_GEOMETRY或IOCTL_STORAGE_GET_MEDIA_TYPES_EX只能得到很少的磁盘参数,我想获得包括硬盘序列号在内的更加详细的信息,有什么办法呀?

A 确实,用你所说的I/O控制码,只能得到最基本的磁盘参数。获取磁盘出厂信息的I/O控制码,微软在VC/MFC环境中没有开放,在DDK中可以发现一些线索。早先,Lynn McGuire写了一个很出名的获取IDE硬盘详细信息的程序DiskID32,下面的例子是在其基础上经过增删和改进而成的。

本例中,我们要用到ATA/APAPI的IDENTIFY DEVICE指令。ATA/APAPI是国际组织T13起草和发布的IDE/EIDE/UDMA硬盘及其它可移动存储设备与主机接口的标准,至今已经到了ATA/APAPI-7版本。该接口标准规定了ATA/ATAPI设备的输入输出寄存器和指令集。欲了解更详细的ATA/ATAPI技术资料,可访问T13的站点。

用到的常量及数据结构有以下一些:

// IOCTL控制码
// #define DFP_SEND_DRIVE_COMMAND 0x0007c084
#define DFP_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE, 0x0021, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
// #define DFP_RECEIVE_DRIVE_DATA 0x0007c088
#define DFP_RECEIVE_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE, 0x0022, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
#define FILE_DEVICE_SCSI 0x0000001B
#define IOCTL_SCSI_MINIPORT_IDENTIFY ((FILE_DEVICE_SCSI << 16) + 0x0501)
#define IOCTL_SCSI_MINIPORT 0x0004D008 // see NTDDSCSI.H for definition

// ATA/ATAPI指令
#define IDE_ATA_IDENTIFY 0xEC // ATA的ID指令(IDENTIFY DEVICE)

// IDE命令寄存器
typedef struct _IDEREGS
{
BYTE bFeaturesReg; // 特征寄存器(用于SMART命令)
BYTE bSectorCountReg; // 扇区数目寄存器
BYTE bSectorNumberReg; // 开始扇区寄存器
BYTE bCylLowReg; // 开始柱面低字节寄存器
BYTE bCylHighReg; // 开始柱面高字节寄存器
BYTE bDriveHeadReg; // 驱动器/磁头寄存器
BYTE bCommandReg; // 指令寄存器
BYTE bReserved; // 保留
} IDEREGS, *PIDEREGS, *LPIDEREGS;

// 从驱动程序返回的状态
typedef struct _DRIVERSTATUS
{
BYTE bDriverError; // 错误码
BYTE bIDEStatus; // IDE状态寄存器
BYTE bReserved[2]; // 保留
DWORD dwReserved[2]; // 保留
} DRIVERSTATUS, *PDRIVERSTATUS, *LPDRIVERSTATUS;

// IDE设备IOCTL输入数据结构
typedef struct _SENDCMDINPARAMS
{
DWORD cBufferSize; // 缓冲区字节数
IDEREGS irDriveRegs; // IDE寄存器组
BYTE bDriveNumber; // 驱动器号
BYTE bReserved[3]; // 保留
DWORD dwReserved[4]; // 保留
BYTE bBuffer[1]; // 输入缓冲区(此处象征性地包含1字节)
} SENDCMDINPARAMS, *PSENDCMDINPARAMS, *LPSENDCMDINPARAMS;


gully 2003-08-20
  • 打赏
  • 举报
回复
查msdn看见DeviceIoControl这个API函数,哪位大侠详细解释一下
待机与休眠的区别 1、待机”电源管理模式 待机模式主要用于节电,该功能使你可不需重新启动计算机就可返回工作状态。待机模式可关闭监视器和硬盘、风扇之类设备,使整个系统处于低能耗状态。在你重新使用计算机时,它会迅速退出待机模式,而且桌面(包括打开的文档和程序)精确恢复到进入等待时的状态。 如要解除等待状态并重新使用计算机,可移动一下鼠标或按键盘上的任意键,或快速按一下计算机上的电源按钮即可。 请注意!与下面所述的“休眠模式”不同,待机模式不在硬盘上存储未保存的信息,这些信息仅仅只存储在计算机内存。如果期间突然断电,这些信息将丢失。因此,在将计算机置于待机模式前应该保存文件。如果你希望在离开计算机时自动保存所做的工作,可使用休眠模式而非待机模式。但是,休眠模式将关闭计算机。 2.“休眠” 电源管理模式 在使用休眠模式时,你可以关掉计算机,并确信在回来时所有工作(包括没来得及保存或关闭的程序和文档)都会完全精确地还原到离开时的状态。内存的内容会保存在磁盘上,监视器和硬盘会关闭,同时也节省了电能,降低了计算机的损耗。一般来说,使计算机解除休眠状态所需的时间要比解除等待状态所需的时间要长,但休眠状态消耗的电能更少。 如果你工作时经常被打断,如某些秘书职业,往往一边要进行计算机处理一边还得接听电话等等,你就可以考虑将计算机设置为经过指定多少分钟后进入自动休眠模式。休眠模式会将内存的所有内容保存到硬盘,关闭监视器和硬盘,然后关闭计算机。 应用网络切换
1。这个游戏具体要实现那些功能?
第一步是建模,在计算机内建立魔方的模型。
第二步是仿真,在屏幕上制造和真实场景一样的效果(游戏性)。
第三步是智能化,利用算法或数据库来自动给用户提供拧魔方的步骤(实用性)。
第四步是拓增其他功能和用途(离这一步我想还不是考虑的时候)。
2。准备怎么分工合作?
这里毕竟不是数学建模,不需要在三天内赶工。每个人根据自己的闲暇时间,编纂劳而有用的东西。每一人都应该有属于自己的代码,无论是自己首创还是改编自他人。每个人按照自己的能力编自己最感兴趣的部分或改编他人的代码。实现第一步并不难,我的建议是个人独立开发。
日后合作为自行组织,在合作前必须统一我们的用语用词,定期发布自己在编写过程所用到的词汇供大家讨论和参考。在互相交换代码模块时就不用大的修改。
3。工程的划分?
你参与了那个部分的建设,可以在论坛声明,以发现志同道合者。
模型建立专家:选用的模型并不非要采用我所给的那一个,把所有的模型都建立出来,多一种模型有多一种的好处。除了立方体魔方,世上还有一种立锥体魔方,4个顶点,6线,4个大面,每面分出9个小面,为等边三角形。请建立模型。
代码专家:设计专门的函数,实现特定的功能。用户对魔方的动作分为:左转、右转、上翻、下翻、左翻、右翻(相对向前的面的动作);上顺拧、上逆拧、右顺拧、右逆拧、前顺拧、前逆拧、左顺拧(顺:顺时针,逆:逆时针)。其他如后顺拧等也开发出来,以备所需。
界面专家:无论多么糟的界面,试着做一个,开创一下先河。不要用VB。列表显示数据库查询的两个数据间所走过的路径。
数据库专家:设计数据的存储形式,用我的那个也可以。接着设计数据库生成的函数(链表的长度可以控制以防塞满硬盘),和查询语句。数据库可以提供最佳的步骤,一般说来20步以内可以拧成所有状态但魔方的状态总的数目相当大,建立一个完整的数据库要占用的硬盘G数,非一般人所能承受。
算法专家:买一个魔方开始拧吧,将自己手工拧魔方的技术编成算法函数,输出拧法列表。打听别人的拧法应该是很快的选择。
测试专家:赶紧下载最新的代码,debug一下,看是否代码有了冗余,如果实在做不来,请等待成品的出现。
dosapp-1218.rar usb-hdd-1218.rar usb-zip-fdd-1218.rar usboot-v1.68.rar 最新DOS 制作全攻略 (软盘+光盘+U盘+硬盘+NTFS+应急实用工具)   一、写在前面的话: DOS对从Windows时代开始接触计算机的人来说,有点难懂、有点神秘,也遥远了一点,但这不能成为大家掌握DOS的绊脚石。学会些DOS知识会让你在电脑世界里玩的更痛快,面对棘手问题的时候更加游刃有余。虽然DOS已经很老了但它还没到隐退江湖的年代,我们拥有Windows,但是我们还需要DOS!   二、对“菜鸟”朋友学习DOS的建议: 在“菜鸟”看来,貌似枯燥的DOS的界面、繁多的DOS命令、大量的键盘操作都给大家带来了很多困扰,我想说明的是,GUI图形化的Windows取代命令行界面的DOS是必然的,学习DOS的初期,你可以先掌握一些常用的DOS命令和简单实用技巧,然后根据你的需要再决定是否继续深入学习。我个人认为,起步时就抱着一本《DOS原理手册》死啃不是明智的选择,而根据常见的问题来逐步研究DOS也许是一个更容易弄懂它的方法。 学习遇到问题时,要习惯于多思考,根据已经掌握的知识举一反三;搞不懂的,可以使用Google搜索引擎,大部分常见的问题都会有答案;遇到问题不论大小马上就去请教“高手”不是明智之举,自己研究出来的答案远比你从“高手”那里得到的现成答案要记忆深刻,也更有利于你今后的学习。希望自己成为高手的人,从不会放弃自己独立思考问题的机会。 DOS启动盘是目前我们最常用的DOS类工具,其的一些命令和工具会帮助你解决不少问题。本文发表的目的就是想通过这些DOS启动盘,让“菜鸟”朋友们有一个对DOS亲身体验和初步了解。我不是DOS高手(绝非nnmm谦虚),考虑到通用性、兼容性、方便大家学习,我制作的这些启动盘也不是全功能的完美作品,我只是想让“菜鸟”朋友们通过这些启动盘来了解DOS,学习DOS,把它做为学习DOS的一个契机。同时也希望有更多熟悉DOS的朋友来帮助“菜鸟”们,大家互相学习互相帮助,共享DOS的自由与开放!   三、常见各种Windows操作系统启动到纯DOS的途径: 1、Win9x单系统或Win9x与2000、XP、2003混合的多系统: ①、Win9x单系统: 在Win9x启动之前按F8会出现一个选择菜单,选择第5项Command prompt only或第6项Safe mode Command prompt only,回车,即可以进入Win9x自带的基本DOS环境(如下图)。 选第5项启动时会加载config.sys和autoexec.bat这两个系统配置文件及内含的驱动和程序(如果存在的话),键入win回车后可以继续启动Win98(win.com在windows目录下); 选第6项只启动最基本的DOS,不加载config.sys和autoexec.bat及任何驱动和程序,键入win回车后不能启动Win98。 ②、Win9x与Win2000或XP、2003混合的系统: 开机启动后会出现如下图的菜单(以Win98和XP混合为例): 选择Microsoft Windows项,按回车的同时立即按几下F8键就会出现与①相同的启动菜单(下图) 选第5项启动时会加载config.sys和autoexec.bat这两个系统配置文件及内含的驱动和程序(如果存在的话); 选第6项只启动最基本的DOS,不加载config.sys和autoexec.bat及任何驱动和程序。 ①和②方法启动DOS的优点:系统自带DOS不用额外安装。缺点:只能本机使用,不具有移动性,一旦操作系统或硬盘故障可能无法启动DOS。 ③、使用启动盘(软盘、光盘、U盘)启动到纯DOS下(本文的主要内容)。 此方法的优点:具有移动性和通用性,操作系统或硬盘故障时也可以启动DOS。缺点:需要额外的软盘、光盘、U盘硬件支持。   2、纯2K/XP/2003系统: 这些系统没有自带DOS,需要通过启动盘(软盘、光盘、U盘)或虚拟软驱来得到DOS环境 (本文的主要内容)。   四、关于本文启动盘的一些说明 1、启动盘的DOS版本均为Windows98附带的DOS7.1。 2、用启动盘启动时,不是加载的功能越多越好,功能越多就意味着可用基本内存越少,产生一些问题的几率也越大,所以请根据自己的实际需要来选择对应的启动菜单。 3、本文各种DOS启动盘存在的部分文件说明: IO.SYS DOS7.1的三个基本系统文件之一 MSDOS.SYS DOS7.1的三个基本系统文件之二 COMMAND.COM DOS7.1的三个基本系统文件之三 ATTRIB.EXE DOS7.1的文件属性修改工具。 AUTOEXEC.BAT DOS的开机自动执行批处理文件。 CONFIG.SYS DOS的系统配置文件。 DELTREE.EXE DOS7.1自带的删除目录及内嵌文件工具。 D.COM DOS下的系统关机工具,适用于ATX电源。 DI1000DD.SYS U盘的驱动。 DOSKEY.COM DOS7.1的DOSKEY,方便的命令行工具。 EDIT.COM DOS7.1的文本编辑工具。 EMM386.EXE DOS7.1的内存管理工具。 FDISK.EXE 分区工具Free Fdisk 1.2.1,支持100G以上的大硬盘。 FDISK-98.EXE Win98的DOS7.1自带分区工具,不支持60G以上的硬盘。 FDISK-ME.exe WinME自带的分区工具,支持60G的硬盘。 FORMAT.COM DOS7.1自带的格式化工具。 HIMEM.SYS DOS7.1的内存驱动。 JMHDFIX.EXE 江民硬盘修复王,修硬盘的好东东,比较危险,新手慎用。 LCC.COM 一个DOS下管理文件和目录的工具,可对文目录和文件操作。 MOUSE.COM PS/2、Serial接口鼠标的DOS驱动。 MSCDEX.EXE DOS7.1的光驱管理程序。 OAKCDROM.SYS DOS7.1的通用光驱驱动。 PC.EXE PCTOOLS,一个强大的多功能工具。 R.COM DOS下的系统重启工具。 SCANDISK.EXE DOS7.1的磁盘扫描工具,用来修复一些常见的磁盘问题。 SMARTDRV.EXE DOS7.1的磁盘高速缓冲,加快DOS下文件读写的速度。 SYS.COM DOS7.1的DOS系统传递工具。 USBASPI.SYS U盘的驱动。 XCOPY.EXE DOS7.1的文件目录复制工具,比COPY命令具有更强大的功能。 -------------------------------------------------------------------------------- 一、软盘版的DOS启动盘 适用对象:有1.44MB 3.5英寸软驱的朋友。 基本功能: A、支持himem和emm386的内存管理,可突破DOS的640K常规内存的限制。 B、支持各种常见IDE接口光驱(CDROM、DVD-ROM)。 C、支持smartdrv磁盘加速,大大加快DOS下磁盘读写的速度,尤其是在DOS下安装系统、GHOST镜像操作、扫描病毒木马,会为你节省不少时间。 D、支持串口(Serial)和PS/2口鼠标。 E、支持U盘(闪存盘)。 最新版软盘DOS启动盘下载地址(复制链接,使用工具下载): 地址1: http://nnmm.arongsoft.com/dos/boot/floopy/floopy-1218.rar 地址2: http://nnmm.arongsoft.net/dos/boot/floopy/floopy-1218.rar 制作和使用步骤: 1、把上面下载的文件解压到硬盘上,将一张1.44M的软盘插入软驱,然后运行解压后的EXE文件,根据提示它会自动做出一张具有上述功能的DOS启动盘。 2、不取出软盘,重启电脑,在系统自检的界面上按Del键进入BIOS设置(如果是特殊BIOS,请参考主板手册后确定按哪个键进入BIOS),进入BIOS FEATURES SETUP,将Boot Sequence(启动顺序)设定为A盘第一,设定的方法是在该项上按PageUP或PageDown键来转换选项。设定好后按ESC一下,退回BIOS主界面,选择Save and Exit(保存并退出BIOS设置,直接按F10也可以,但不是所有的BIOS都支持)回车确认退出BIOS设置。 3、系统重启后会自动从软驱引导DOS系统,出现的引导菜单选项如下: Boot DOS with CDROM 标准功能+光驱驱动 Boot DOS with CDROM + U-DISK 标准功能+光驱驱动+U盘驱动 Boot DOS ONLY (No Any Drivers) 只启动基本DOS系统 REBOOT YOUR PC 重启计算机 SHUTDOWN YOUR PC 关闭计算机 注1:标准功能是指已加载himem.sys和emm386.exe内存驱动、smartdrv磁盘加速、鼠标驱动、doskey。 注2:基本DOS系统是指仅仅加载IO.SYS、MSDOS.SYS和COMMAND.COM这3个DOS核心文件,不加载其他任何驱动和程序。 用↑↓键选择你需要的启动方式,回车确定。这里需要特别说明的是,如果你选择了驱动U盘的选项,在启动过程会在扫描USB设备时停顿比较久(1-2分钟不等),大家不要以为死机,请耐心等待一下。 4、DOS成功后,会显示DOS LOADING SUCCESSFUL的字样并处于A:\>的提示符下: 至此DOS系统启动完毕,你现在就可以做你该做的事情了。 注意事项: 1、用质量好的软盘来做启动盘,保证软驱工作正常。 2、如果U盘出现问题请参考三、U盘版的DOS启动盘最后的注意事项。 -------------------------------------------------------------------------------- 二、光盘版的DOS启动盘 适用对象:有光驱(刻录机)的朋友 基本功能: A、支持himem和emm386的内存管理,可突破DOS的640K常规内存的限制。 B、支持各种常见IDE接口光驱(CDROM、DVD-ROM)。 C、支持smartdrv磁盘加速,大大加快DOS下磁盘读写的速度,尤其是在DOS下安装系统、GHOST镜像操作、扫描病毒木马,会为你节省不少时间。 D、支持串口(Serial)和PS/2口鼠标。 E、支持U盘(闪存盘)。 F、支持NTFS分区的读写。 最新版光盘DOS启动盘下载地址(复制链接,使用工具下载): 地址1: http://nnmm.arongsoft.com/DOS/boot/cdrom/cdrom-1218.rar 地址2: http://nnmm.arongsoft.net/DOS/boot/cdrom/cdrom-1218.rar 制作和使用步骤: 1、下载上面的rar文件,把里面的ima文件释放到硬盘。 2、打开刻录软件nero,5.5和6系列版本均可,5.5版本请退出nero的精灵模式,下面以nero6为例讲解。   按上面的步骤可以打开nero6的《高级任务模式》,点击《制作可引导光盘》后会出现下面的对话框。 在nero弹出的窗口左侧会出现《CDROM-引导》; ①在《启动》 项里选择《映像文件》,在《浏览》里选刚刚释放出的那个ima文件; ②打开高级设置 ③在《虚拟类型》里选《虚拟2.88MB软盘》; ④点《新建》后进入nero界面。 3、如果你只想拥有本页顶部描述的基本功能,请跳过本条看下一条。 想拥有更强大的DOS功能,请下载下面的压缩包(复制链接,使用工具下载): 地址1: http://nnmm.arongsoft.com/dos/boot/dosapp-1218.rar 地址2: http://nnmm.arongsoft.net/dos/boot/dosapp-1218.rar 这个压缩包里包含了以下内容: BIOS-DOS下模拟AWARD BIOS界面的一个小工具,可以让你在模拟的环境里学习调整BIOS,它不会触及到你真正的BIOS,放心使用,执行文件:bios.exe。 DM955-dm万用版9.55,分区和修复硬盘的常用工具,执行文件:dm.com。 DOSLFN-DOS下支持长文件名的工具DOSLFN 0.32o版,使用方法请看附带说明。 DOS-最常用的DOS外部命令和一些DOS工具,最大限度的扩展你的DOS功能。 HDFIX-江民的硬盘修复王,修硬盘的利器,菜鸟慎用,执行文件:jmhdfix.exe。 HWINFO-DOS下不错的硬件信息查看工具,这个是最新for DOS版本4.95,执行文件:hwinfo.exe。 GHOST-各个DOS版本的GHOST,请选择你需要的。 NDD2004-诺顿的磁盘医生2004的DOS+WIN的2合1版,用来修复硬盘的问题,DOS下的执行文件:ndd.exe,windows下的执行文件:ndd32.exe。 NTFS-可在DOS下读写NTFS分区的工具,对运行DOS版的杀毒软件和操作NTFS分区的数据都有实际用途,可执行文件:ntfspro.exe。(NTFS功能本启动盘已经包括)PQ805-最新的pqmagic的8.05版,DOS下分区的利器,支持200G以上的大硬盘,支持鼠标操作,可执行文件: pqmagic.exe。 SEA-DOS最棒的秀图工具,这个是1.3的注册版,支持鼠标操作,执行文件:sea.exe,退出按F10。 TW-DOS下的汉字平台:天汇3.2,执行文件:tway.bat,会自动加载拼音和五笔输入法,Alt+F2启动拼音输入法,Alt+F3启动五笔输入法,右Shift键英文输入法切换。 UCDOS-DOS下的汉字平台:UCDOS98袖珍特别版,内含CCED5.18和WPS2.0,自带拼音和五笔输入法,Alt+F2启动拼音输入法,Alt+F5启动五笔输入法,右Shift键英文输入法切换,启动UCDOS:u.bat,启动CCED:cced.exe,启动WPS:wps.com。(注意,UCDOS目录必须在光盘、硬盘、U盘的根目录下,否则运行起来会有问题,CCED和WPS运行前必须启动UCDOS或TW,否则显示的都是乱码。)VC-Volkov Commander 4.99.08,DOS下支持文长文件名的文件管理器,具有图形化的界面,支持鼠标操作,执行文件:vc.com。 此压缩包下载后解压缩到硬盘上,在nero把它们加入到待刻录的内容(如下图) 待制作成启动光盘后,在DOS下转到光盘盘符,进入相应目录执行相应的程序即可。 4、其实你可以在这张光盘加入任何你需要的内容,比如Win XP的安装文件或者其他的DOS程序等等。视光盘容量,CDRW一般不超过650MB,CDR一般不超过700MB,已加入文件的大小总值在nero主界面的最下面有刻度显示。 需要特别说明的: ①在nero的刻录界面里是看不到开始时加入的ima文件内容的,因为这个ima文件已被nero“隐藏”起来。 ②为了DOS下能方便进出目录和执行程序,请尽量保证光盘上刻录的内容都使用8.3格式的目录名或文件名。8.3格式是指文件名(或目录名)不超过8个半角英文字符或数字,扩展名不超过3个半角英文字符或数字。如果目录名或文件名是文,进入目录或执行程序时通常需要加载额外的汉字系统。 ③要运行光盘上的程序必须在启动时选择加载光驱驱动,否则无法转换到光驱的盘符。 你需要的文件都加好之后,就可以刻录光盘了(如下图):   完成后你就有了一张自己的DOS启动光盘喽。 5、将该光盘放入光驱,重启电脑,在系统自检的界面上按Del键进入BIOS设置(如果是特殊BIOS,请参考主板手册后确定按哪个键进入BIOS),进入BIOS FEATURES SETUP,将Boot Sequence(启动顺序)设定为CDROM第一,设定的方法是在该项上按PageUP或PageDown键来转换选项。设定好后按ESC一下,退回BIOS主界面,选择Save and Exit(保存并退出BIOS设置,直接按F10也可以,但不是所有的BIOS都支持)回车确认退出BIOS设置。 6、系统重启后会自动从光驱引导DOS系统,出现的引导菜单选项如下: Boot DOS with CDROM 标准功能+光驱驱动 Boot DOS with CDROM + U-DISK 标准功能+光驱驱动+U盘驱动 Boot DOS with CDROM + U-DISK + NTFS 标准功能+光驱驱动+U盘驱动+读写NTFS分区 Boot DOS ONLY (No Any Drivers) 只启动基本DOS系统 REBOOT YOUR PC 重启计算机 SHUTDOWN YOUR PC 关闭计算机 注1:标准功能是指已加载himem.sys和emm386.exe内存驱动、smartdrv磁盘加速、鼠标驱动、doskey。 注2:基本DOS系统是指仅仅加载IO.SYS、MSDOS.SYS和COMMAND.COM这3个DOS核心文件,不加载其他任何驱动和程序。 用↑↓键选择你需要的启动方式,回车确定。这里需要特别说明的是,如果你选择了驱动U盘的选项,在启动过程会在扫描USB设备时停顿比较久(1-2分钟不等),大家不要以为死机,请耐心等待一下。 7、启动成功后,会显示DOS LOADING SUCCESSFUL的字样并处于A:\>的提示符下 至此DOS系统启动完毕,你现在就可以做你该做的事情了。 注意事项: 1、推荐用CDRW盘制作启动盘,将来版本更新可以随时替换,你也可以把你常用的一些DOS工具或操作系统刻录到本光盘,方便使用。 2、有NTFS分区的硬盘或多硬盘系统,在DOS下其盘符(FAT32或NTFS分区)排列和在Windows的顺序可能不一样,请大家自行查找确定,以免误操作。 3、如果U盘出现问题请参考三、U盘版的DOS启动盘最后的注意事项。 -------------------------------------------------------------------------------- 三、U盘版的DOS启动盘 特别说明:本文所说的U盘指的是USB接口的闪存盘(俗称U盘),不是USB硬盘。 适用对象:有U盘的朋友(嫌光盘麻烦的朋友) 基本功能: A、支持himem和emm386的内存管理,可突破DOS的640K常规内存的限制。 B、支持各种常见IDE接口光驱(CDROM、DVD-ROM)。 C、支持smartdrv磁盘加速,大大加快DOS下磁盘读写的速度,尤其是在DOS下安装系统、GHOST镜像操作、扫描病毒木马,会为你节省不少时间。 D、支持串口(Serial)和PS/2口鼠标。 E、支持NTFS分区的读写。 新版启动型U盘制作工具下载地址(复制链接,使用工具下载): 地址1: http://nnmm.arongsoft.com/dos/boot/usb/usboot.rar 地址2: http://nnmm.arongsoft.net/dos/boot/usb/usboot.rar 下载后把程序解压缩出来,再把你的U盘插上,按照下面的步骤就可以把你的U盘制作成DOS启动型的(注意事先备份U盘有用的数据):   USBOOT运行后(见下图): ①选你的U盘; ②点击蓝色的字选择工作模式; ③强烈建议选择ZIP模式! HDD模式和FDD模式建议在ZIP模式不能正常工作时再试用; ZIP模式是指把U盘模拟成ZIP驱动器模式,启动后U盘的盘符是A: HDD模式是指把U盘模拟成硬盘模式;特别注意:如果选择了HDD模式,那么这个启动U盘启动后的盘符是C:,在对启动分区进行操作时就容易产生很多问题,比如:装系统时安装程序会把启动文件写到U盘而不是你硬盘的启动分区!导致系统安装失败。所以请尽量先选择ZIP模式。 FDD模式是指把U盘模拟成软驱模式,启动后U盘的盘符是A:,这个模式的U盘在一些支持USB-FDD启动的机器上启动时会找不到U盘,所以请酌情使用。   ④点击《开始》,开始制作。 ⑤出现下面这个对话框时,确保你的U盘数据已没用,再选择《是》。 ⑥启动盘制作时出现下面的提示,请按正常程序拔下U盘: Win9x系统:可直接拔下U盘 Win2000、XP、2003系统:请双击任务栏右侧红色圆圈内的《安全删除硬件》图标,正常卸载U盘。 ⑦请再次插上U盘 ⑧稍后就会出现下面这个成功的提示,说明你的U盘目前已经是可启动基本DOS的了,点击右上角的×关闭USBOOT。   2、根据你U盘的模式,下载下面的rar压缩包,把里面的所有文件释放到U盘的根目录下,注意必须是根目录! 下载地址(复制链接,使用工具下载): ZIP和FDD模式压缩包下载地址1: http://nnmm.arongsoft.com/dos/boot/usb/usb-zip-fdd-1218.rar ZIP和FDD模式压缩包下载地址2: http://nnmm.arongsoft.net/dos/boot/usb/usb-zip-fdd-1218.rar ★★★★★★★★★★★★★★★★★★★★★★★★★★★★ HDD模式压缩包下载地址1: http://nnmm.arongsoft.com/dos/boot/usb/usb-hdd-1218.rar HDD模式压缩包下载地址2: http://nnmm.arongsoft.net/dos/boot/usb/usb-hdd-1218.rar   3、如果你只想拥有本页顶部描述的基本功能,请跳过此条,看下一条。 想拥有更强大的DOS功能,请下载下面的压缩包(复制链接,使用工具下载): 地址1: http://nnmm.arongsoft.com/dos/boot/dosapp-1218.rar 地址2: http://nnmm.arongsoft.net/dos/boot/dosapp-1218.rar 这个压缩包里包含了以下内容: BIOS-DOS下模拟AWARD BIOS界面的一个小工具,可以让你在模拟的环境里学习调整BIOS,它不会触及到你真正的BIOS,放心使用,执行文件:bios.exe。 DM955-dm万用版9.55,分区和修复硬盘的常用工具,执行文件:dm.com。 DOSLFN-DOS下支持长文件名的工具DOSLFN 0.32o版,使用方法请看附带说明。 DOS-最常用的DOS外部命令和一些DOS工具,最大限度的扩展你的DOS功能。 HDFIX-江民的硬盘修复王,修硬盘的利器,菜鸟慎用,执行文件:jmhdfix.exe。 HWINFO-DOS下不错的硬件信息查看工具,这个是最新for DOS版本4.95,执行文件:hwinfo.exe。 GHOST-各个DOS版本的GHOST,请选择你需要的。 NDD2004-诺顿的磁盘医生2004的DOS+WIN的2合1版,用来修复硬盘的问题,DOS下的执行文件:ndd.exe,windows下的执行文件:ndd32.exe。 NTFS-可在DOS下读写NTFS分区的工具,对运行DOS版的杀毒软件和操作NTFS分区的数据都有实际用途,可执行文件:ntfspro.exe。(NTFS功能本启动盘已经包括)PQ805-最新的pqmagic的8.05版,DOS下分区的利器,支持200G以上的大硬盘,支持鼠标操作,可执行文件: pqmagic.exe。 SEA-DOS最棒的秀图工具,这个是1.3的注册版,支持鼠标操作,执行文件:sea.exe,退出按F10。 TW-DOS下的汉字平台:天汇3.2,执行文件:tway.bat,会自动加载拼音和五笔输入法,Alt+F2启动拼音输入法,Alt+F3启动五笔输入法,右Shift键英文输入法切换。 UCDOS-DOS下的汉字平台:UCDOS98袖珍特别版,内含CCED5.18和WPS2.0,自带拼音和五笔输入法,Alt+F2启动拼音输入法,Alt+F5启动五笔输入法,右Shift键英文输入法切换,启动UCDOS:u.bat,启动CCED:cced.exe,启动WPS:wps.com。(注意,UCDOS目录必须在光盘、硬盘、U盘的根目录下,否则运行起来会有问题,CCED和WPS运行前必须启动UCDOS或TW,否则显示的都是乱码。)VC-Volkov Commander 4.99.08,DOS下支持文长文件名的文件管理器,具有图形化的界面,支持鼠标操作,执行文件:vc.com。 此压缩包下载后解压缩到硬盘上,按目录释放到U盘根目录下即可,待启动到DOS后,转到U盘的盘符,进入相应目录执行相应的程序即可。 4、至此,你已经有了一个功能不错的DOS启动U盘了。 5、用这个U盘启动计算机:将U盘插入主板USB接口(最好将其他无关的USB设备暂时拔掉),重启电脑,在系统自检的界面上按Del键进入BIOS设置(如果是特殊BIOS,请参考主板手册后确定按哪个键进入BIOS),进入BIOS FEATURES SETUP,将Boot Sequence(启动顺序)设定为USB-ZIP(或USB-HDD、USB-FDD,请与你制作的U盘工作模式对应)第一,设定的方法是在该项上按PageUP或PageDown键来转换选项。设定好后按ESC一下,退回BIOS主界面,选择Save and Exit(保存并退出BIOS设置,直接按F10也可以,但不是所有的BIOS都支持)回车确认退出BIOS设置。 注意:有些主板(尤其是老主板)的BIOS不支持U盘启动,所以会找不到相应的选项。 6、系统重启后会自动从U盘引导DOS系统,出现的引导菜单选项如下: Boot DOS with CDROM 标准功能+光驱驱动 Boot DOS with CDROM + NTFS 标准功能+光驱驱动+读写NTFS分区 Boot DOS ONLY (No Any Drivers) 只启动基本DOS系统 REBOOT YOUR PC 重启计算机 SHUTDOWN YOUR PC 关闭计算机 注1:标准功能是指已加载himem.sys和emm386.exe内存驱动、smartdrv磁盘加速、鼠标驱动、doskey。 注2:基本DOS系统是指仅仅加载IO.SYS、MSDOS.SYS和COMMAND.COM这3个DOS核心文件,不加载其他任何驱动和程序。 用↑↓键选择你需要的启动方式,回车确定。 7、启动成功后,会显示DOS LOADING SUCCESSFUL的字样。 如果是ZIP模式或FDD模式的U盘,会出现A:\>的提示符(如下图) 如果是HDD模式的U盘,会出现C:\>的提示符(如下图)   至此DOS系统启动完毕,你现在就可以做你该做的事情了。 注意事项: 1、制作启动盘之前请备份好U盘上有用的数据,最好能完全格式化一遍U盘。 2、有NTFS分区的硬盘或多硬盘的系统,在DOS下硬盘的盘符排列和在Windows的顺序可能不一样,请大家自行查找确定,以免误操作。 3、如果启动U盘在使用发生问题,请试试下面的方法: ①换成其他的工作模式(ZIP、HDD、FDD); ②选择DOS启动菜单其他的选项; ③更换一个不同品牌的U盘重新制作一次; ④把U盘拿到其他品牌的电脑上试一下能不能正常工作。 4、U盘启动盘出现问题主要原因: ①主板不支持U盘启动(或支持的不完善); ②某些DOS软件(尤其是对磁盘操作类的)对U盘支持的可能不是很好; ③U盘是DOS之后出现的新硬件,种类比较繁杂,而且目前绝大多数的USB设备都没有DOS下的驱动,目前使用的基本都是兼容驱动,所以出现一些问题也在所难免; ④U盘本身质量有问题; ⑤经常对U盘有不正确的操作,比如2000、XP、2003下直接插拔U盘,而不是通过《安全删除硬件》来卸载。 5、关于USBOOT这个工具的使用注意事项和容易产生的问题,请看其压缩包的PDF文档,里面说的已经很详细了。 -------------------------------------------------------------------------------- 四、硬盘版的DOS启动 适合对象:没有软驱、U盘、光驱(刻录机)的朋友(或喜欢追求速度感的朋友) 方法一: 在新装系统(2K/XP/2003)之前,如果你的C盘是FAT32格式,那么你可以用Win98的DOS启动盘启动系统,再执行sys c:这个命令,向C盘传递DOS的3个基本启动文件,再安装2K/XP/2003(注意安装时不要改变C盘的分区格式),Windows安装完毕后,再开机就会出现两个启动选项,让你选项是启动2K/XP/2003还是启动Microsoft Windows(即DOS7.1),↑↓键选择,回车确认。(如下图) 这个方法适合比较熟悉DOS配置的朋友,因为此方法需要手动配置config.sys和autoexec.bat这个两个文件。 方法二(推荐): 本方法不适用单独的9x系统,只适用于2K、XP、2003或与Win 9x混合的多系统。 如果你已经安装了2K/XP/2003或与Win9x混合的系统,或者系统盘是NTFS格式,但又想再安装DOS,虽然可以通过修改一些系统文件来实现,但比较麻烦,在此推荐这个简单的方法: 基本功能: A、支持himem和emm386的内存管理,可突破DOS的640K常规内存的限制。 B、支持各种常见IDE接口光驱(CDROM、DVD-ROM)。 C、支持smartdrv磁盘加速,大大加快DOS下磁盘读写的速度,尤其是在DOS下安装系统、GHOST镜像操作、扫描病毒木马,会为你节省不少时间。 D、支持串口(Serial)和PS/2口鼠标。 E、支持U盘(闪存盘)。 F、支持NTFS分区的读写。 1、下载下面这个工具VFloopy(虚拟软驱--林超兄的作品),内含nnmm制作的DOS启动的镜像文件NTFS.IMG。(复制链接,使用工具下载): 地址1: http://nnmm.arongsoft.com/dos/boot/hdd/hdd-1218.rar 地址2: http://nnmm.arongsoft.net/dos/boot/hdd/hdd-1218.rar 2、把rar包解压缩到硬盘上,关闭其他无关的程序,运行其的VFloopy.exe。 ①点击《映像文件》栏后面的选择按钮 ②③选刚刚解压缩出来的最新版本NTFS.IMG后,按《打开》。 ④此界面的选项一般无需改动,直接点击《应用》按钮。   ⑤可以点《是》查看日志 ⑥显示了日志的详细内容,点击《返回》按钮继续下一步 ⑦vfloopy要求重新启动系统,点击《是》重启系统。 2、系统重启后,在进入2K/XP/2003之前,引导菜单会多出一项《由虚拟启动软盘启动》,这个就是用虚拟软盘启动到DOS的选项了,选它,回车。 出现了下面这个DOS启动菜单,菜单的含意如下: Boot DOS with CDROM 标准功能+光驱驱动 Boot DOS with CDROM + NTFS 标准功能+光驱驱动+读写NTFS分区 Boot DOS with CDROM + U-DISK 标准功能+光驱驱动+U盘驱动 Boot DOS with CDROM + U-DISK + NTFS标准功能+光驱驱动+U盘驱动+读写NTFS分区 Boot DOS ONLY (No Any Driver). 只启动基本DOS系统 REBOOT YOUR PC. 重启计算机 SHUTDOWN YOUR PC. 关闭计算机 注1:标准功能是指已加载himem.sys和emm386.exe内存驱动、smartdrv磁盘加速、鼠标驱动、doskey。 注2:基本DOS系统是指仅仅加载IO.SYS、MSDOS.SYS和COMMAND.COM这3个DOS核心文件,不加载其他任何驱动和程序。 用↑↓键选择你需要的启动方式,回车确定。这里需要特别说明的是,如果你选择了驱动U盘的选项,在启动过程会在扫描USB设备时停顿比较久(1-2分钟不等),大家不要以为死机,请耐心等待一下。 3、如果你不需要其他的DOS工具,请跳过本条,直接看下一条。 想拥有更强大的DOS功能,请下载下面的压缩包(复制链接,使用工具下载): 地址1: http://nnmm.arongsoft.com/dos/boot/dosapp-1218.rar 地址2: http://nnmm.arongsoft.net/dos/boot/dosapp-1218.rar 这个压缩包里包含了以下内容: BIOS-DOS下模拟AWARD BIOS界面的一个小工具,可以让你在模拟的环境里学习调整BIOS,它不会触及到你真正的BIOS,放心使用,执行文件:bios.exe。 DM955-dm万用版9.55,分区和修复硬盘的常用工具,执行文件:dm.com。 DOSLFN-DOS下支持长文件名的工具DOSLFN 0.32o版,使用方法请看附带说明。 DOS-最常用的DOS外部命令和一些DOS工具,最大限度的扩展你的DOS功能。 HDFIX-江民的硬盘修复王,修硬盘的利器,菜鸟慎用,执行文件:jmhdfix.exe。 HWINFO-DOS下不错的硬件信息查看工具,这个是最新for DOS版本4.95,执行文件:hwinfo.exe。 GHOST-各个DOS版本的GHOST,请选择你需要的。 NDD2004-诺顿的磁盘医生2004的DOS+WIN的2合1版,用来修复硬盘的问题,DOS下的执行文件:ndd.exe,windows下的执行文件:ndd32.exe。 NTFS-可在DOS下读写NTFS分区的工具,对运行DOS版的杀毒软件和操作NTFS分区的数据都有实际用途,可执行文件:ntfspro.exe。(NTFS功能本启动盘已经包括)PQ805-最新的pqmagic的8.05版,DOS下分区的利器,支持200G以上的大硬盘,支持鼠标操作,可执行文件: pqmagic.exe。 SEA-DOS很棒的秀图工具,这个是1.3的注册版,支持鼠标操作,执行文件:sea.exe,退出按F10。 TW-DOS下的汉字平台:天汇3.2,执行文件:tway.bat,会自动加载拼音和五笔输入法,Alt+F2启动拼音输入法,Alt+F3启动五笔输入法,右Shift键英文输入法切换。 UCDOS-DOS下的汉字平台:UCDOS98袖珍特别版,内含CCED5.18和WPS2.0,自带拼音和五笔输入法,Alt+F2启动拼音输入法,Alt+F5启动五笔输入法,右Shift键英文输入法切换,启动UCDOS:u.bat,启动CCED:cced.exe,启动WPS:wps.com。(注意,UCDOS目录必须在光盘、硬盘、U盘的根目录下,否则运行起来会有问题,CCED和WPS运行前必须启动UCDOS或TW,否则显示的都是乱码。)VC-Volkov Commander 4.99.08,DOS下支持文长文件名的文件管理器,具有图形化的界面,支持鼠标操作,执行文件:vc.com。 把它们按目录释放到出来(强烈建议释放到硬盘的FAT32分区,保存在光盘和U盘也可以),待启动到DOS后,转到该盘的盘符,进入相应目录执行相应的程序即可。 4、启动成功后,会显示DOS LOADING SUCCESSFUL的字样并处于A:\>的提示符下 至此硬盘版的DOS启动已经制作成功,只要你不重装系统或格式化系统盘,这个DOS引导菜单就会一直存在。   给菜鸟朋友的友情提示: 如果开机后《操作系统选择菜单》出现的时间过久或太短,可以用下面这个方法来调整: ①右击桌面《我的电脑》,选择《属性》,点击《高级》,点击《设置》 ②把红色框框里面的选项勾上,再把时间改为10秒(或者你认为合适的数字)   ③点击《确定》、《确定》后即可,系统重启后,操作系统选择菜单显示的时间就变成了你刚刚设定的时长。 注意事项: 1、新手不要随意修改C:\BOOT目录及其内含文件;不要随意修改C:\Boot.ini文件; 2、不要对启动分区进行磁盘整理,否则虚拟软驱启动会失效,如需的确需要整理,整理后再运行Vfloppy重新做一次 ; 3、不要随意用sys命令向系统分区传递DOS系统; 4、启动分区最好不用NTFS的压缩格式,至少保证根目录下的BOOT目录及其内含的文件不能被压缩; 5、有NTFS分区的硬盘或多硬盘的系统,在DOS下其盘符排列和在Windows的顺序可能不一样,请大家自行查找确定,以免误操作。 6、U盘出现的问题请参考三、U盘版的DOS启动盘最后的注意事项 7、更多关于Vfloopy的注意事项,请看压缩包里的Vfloopy说明文档chm。
此文件是MyFll.fll文件不可分割的一部分,包含对MyFll函数库全部说明及示例。 MyFll是专为Microsoft Visual FoxPro设计的扩展库,部分函数来自任明汉(RMH myF1论坛)前辈提供的myDll代码翻译而成,由于很多功能利用VFP处理比较烦锁,或无法实现,使用此库可有效解决VFP的弱项。部分与Win32Api同名的函数,是Win32API的封装。部分函数取自网上开源算法,在相关函数均有注明。 此源代码使用VC6 sp6开发,采用VFP9 Sp2的库文件,理论上可以应用于VFP6 7 8 9版本。 此库在第一次打开时自动添加智能感应功能已关闭。请在打开后,使用FllAddFoxCode()向智能感应库添加所有的函数原型(需要VFP7以上),此库存所有函数使用VFP推荐的命名规则,一般可以根据函数名和知能感应的提示参数来推测参数及返回值。 开发环境可以使用FllHelp()函数来检查函数信息: 取得此版本函数个数:FllHelp() 取得第x个函数的信息:?FllHelp(x) 显示提示信息:?FllHelp(x,.T.) 显示指定函数的信息:FllHelp("SendMessage",.T.) 显示Fll的版:?FllGetVersion() 添加智能感应代码:FllAddFoxCode() 版本信息:由于不定期更新,请及时核对版本(右键属性),版本为X.X.X.X,第一位为主版本号,第二位为函数个数,第三位为发布的年份,第四位为日期。当前版本为:1.179.9.811 版权:你可以自由使用、散发此函数库及此帮助,包括应用于你的商业软件。在转发时应注意帮助文件于函数库和帮助同在。不得对软件进行破解、反编译等破性或逆向工程。MyFll作者不承担可能由于技术原因或失误给你带来的错误或损失。发现错误可以与作者取得联系共同改进。 感谢:我的帮助论坛http://www.myf1.net/bbs 梅子论坛 http://www.meizvfp.com/bbs 感谢:各位为Myfll做测试、编写帮助的热心网友。 作者:木瓜 ljyit@163.com 函数列表: 硬件相关函数: GetDiskSerial        读取指定硬盘的序列号 GetCpuId           读取CPU的序列号 GetMAC            读取网卡的MAC地址 GetVolumeNumber       读取指写磁盘的卷标 IsDiskInDrive        检查指定磁盘是否就绪 GetPort           读取系统的串口、并口 ComOpen           打开串口 ComWrite           向串口输出信息 ComRead            从串口读取信息 ComClose           关闭串口 GetGUID            获取全球唯一ID AEthernet          枚举网卡的所有信息 加密解密函数: MD5File           计算一个文件的MD5效验和 MD5String          计算一个字符串的MD5效验和 CRC32File          计算一个文件的CRC32效验和 CRC32String         计算一个字符串的CRC32效验和 des             采用DES算法加密或解密一个字符串,长度为8位 des16            采用DES算法加密或解密一个字符串,长度为16位 des24            采用DES算法加密或解密一个字符串,长度为24位 EnDeString          双向加密解密字符串的函数 Encrypt           双向加密解密字符串 RSACalc           RSA计算函数 RSAGen            生成随机RSA密钥函数 RSACmp            比较两个十六进制值是否相等 URLEncode          URL编码 URLDecode          URL解码 QPEncode           Quoted-Printable QP编码 QPDecode           Quoted-Printable QP解码 压缩解压函数: Zip              压缩文件 UnZip             解压文件 UnZipFile           解压单个文件           ZipInfo            测试一个文件是否在压缩文件存在 ZipFileToStr         将压缩文件的文件解压到变量 ZipAFile           将zip文件的文件信息生成的数组 CompressString        压缩一个字符串 DeCompressString       解压字符串 数据库: CursorToStr         将Cursor生成变量 ChangesToStr         将Cursor的变动情况生成变量         StrToCursor         将变量还原为Cursor AppendFromStr        将变量的表追加到指定表 ACursorList         将变量的表信息生成数组 ACursorFields        将变量的指定表的字段信息生成数组 CRC32Record         计算一条记录的CRC32值 SQLCallBack         SQL回调函数载入 SQLCallReset         SQL回调函数卸载 PackMDB           压缩修复Access数据库 ReadMemo           读取vfp大于16M的备注字段 网络相关函数: DownFile           从internet上下载文件到本地 DownFileX           线程方式从网上下载一个文件 HttpGetFileSize       读取internet上的文件大小 HttpPostData         向http服务器Post数据 HttpOpen           打开一个Internet句柄 HttpAddParms         为Http句柄添加一个参数 HttpSend           发送Http句柄的Post数据 HttpClose          关闭Http句柄 FtpDownFile          从FTP服务器下载文件 FtpUploadFile        向FTP服务器上传文件 FtpConnect          连接FTP服务器 FtpDisconnect        断开FTP服务器连接 FtpAFile          枚举Ftp的所有文件 FtpCreateDir        在FTP服务器上创建一个文件夹         FtpSetCurrentDir      设置当前的文件夹 FtpDeleteDir        删除FTP服务器上的文件夹 FtpDelFile         删除FTP服务器上的文件 FtpRename          重命名FTP服务器上的文件 FtpFOpen          打开FTP服务器上的文件 FtpFClose         关闭FTP服务器上的文件 FtpFRead          读取FTP服务器上的文件 FtpFWrite          写入FTP服务器上的文件 FtpSetPasv          设置FTP被动工作模式 ShareAdd           在局域网共享文件夹 ShareDel           删除共享文件夹的共享 ShareMapDrive         映射网络驱动器 ShareDelDrive         删除映射的网络驱动器 GetLocalIP          读取本机IP DomainToIP          转换域名为IP地址 DialUp            建立拨号连接 DialDown           断开拨号连接 GetSqlServer         列出所有网络上的SQL Server IpToMAC           根据IP得到MAC地址 邮件函数: SmtpCreate          创建一个SMTP发送邮件的句柄 SmtpNewMail         在内存创建邮件内容,等待发送 SmtpSend           发送邮件 SmtpGetLastError       检测邮件最后的错误 Pop3Create          创建一个POP3接收邮件的句柄 Pop3Close          关闭句柄 Pop3AMailList        枚举POP3服务器上的邮件数量 Pop3DeleteMail        删除POP3邮件服务器上的邮件 Pop3GetMail         下载一封邮件 Pop3GetMailHeader      下载邮件头 Pop3DeleteMail        删除服务器上的邮件 打印相关函数: PaperAdd           添加自定义纸张并返回ID PaperDel           删除自定义纸张 PaperInfo          读取所有纸张信息或指定纸张信息 APaper            枚举所有纸张生成数组 GetDefaultPrinter      取得默认打印机的名称 SetDefaultPrinter      设置默认打印机 PrinterOpen         启用一个打印任务 PrinterOutPage        打印页对像 PrinterClose         结束打印 常用转换函数: ToPY             生成指写字符串的拼音首字 NToC             数字转人民币大写 hzbh             计算指定字符串的汉字笔划 StringToDword        将高底位存放的字符串,转换为字符型 DwordToString        将整型数值转换为字符型数值 NumConver          进制转换函数,能够将一个数字转换为2至36进制的字符串 ConverNum           将指定进制的字符串转换为数值型 GB2312ToBIG5         简体转繁体 BIG5ToGB2312         繁体转简体 FormToBmp          将表单保存为BMP图片 RectToBmp           指定屏幕区域保存为bmp图片 StrReverse          指定屏幕区域保存为bmp图片 ImageConver         转换图片格式 FTrim            删除字符串除指定字符以外的字符 Thumbnail          缩放图片 注册表读写函数: regRead           读取注册表的设置 regWrite           向注册表写入设置 regDelKey          删除注册表的分支 regDelValue         删除注册表的设置 ini文件读写函数: iniRead           从ini文件读取设置 iniWrite           向ini文件写入一个设置 iniSet            设置默认的数据段和ini文件 iniSetSection        设置默认的数据段 iniSetFileName        设置默认的ini文件 系统托盘 SysTrayAdd          向系统托盘添加一个图标 SysTrayEdit         修改系统托盘的图标 SysTrayDel          删除系统托盘的图标 HotKeyAdd          向系统注册一个热键 HotKeyDel          删除向系统注册的热键 SysTrayShowMessage      显示托盘消息 文件操作 CopyFiles          复制文件 MoveFiles          移动文件 DeleteFiles         删除文件 CreateShortcut        创建快捷方式 GetIcon           释放exe或dll的图标 其它: SetVFPEvents         设置MYFLL内部函数回调功能 SetDateTime         设置Windows系统时间 ChangEres          更改屏幕的分辨率 idleLoad           开始加载空闲检测 idleSeconds         读取系统空闲时间 idleUnload          卸载空闲检测 KillApp           终止指定进程 KillAllApp          终止所有进程,但排除指定标题的进程 KillProcessByName      根据程序文件名杀死一个进程 FindAllFile         查找指定文件夹下的所有文件 IsNum            检测函数是否是数字 CheckProcess         检测主程序是否重复运行 ProcLoad            载入一个VFP函数,取得函数地址 ProcUnload          卸载函数 MemRead           读取指定地址的内存 MemWrite           写入指写内存 PushError          系统错误处理压栈 PopError           系统错误处理出栈 Format            格式化输出字符串(类C语言) CreateLink          创建文件关联 DesktopHide         隐藏桌面 SystemKeySet         禁用系统键 RegisterFile         注册文件名解除文件注册 封装过的Win32 API函数: FindWindow          查找指定窗口的句柄 SendMessage         向指写窗口发送指定消息 PostMessage         将消息投递到指定句柄的消息队列 ShowWindow          显示指定窗口 ShowWindowAsync       显示指定窗口 SetWindowLong        设置窗口的扩展样式 SetLayeredWindowAttributes  设置窗口效果 SetForegroundWindow     激活指定窗口使这成为最前面的窗口 ShellExecute         调用系统关联,打开一个文件 ShellExecWait        调用一个程序,并等待执行结束 SuspendThread        暂停一个线程 ResumeThread         恢复一个线程 Beep             使电脑内喇叭发出beep声 ExitWindowsEx        退出Windows Sleep            程序挂起nMilliseconds毫秒 ExitProcess         终止当前进程 GetLastError         返回最后的错误号码 SetParent          设置窗口的父窗口 UpdateWindow         更新窗口

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧