包装fbinst.exe实现傻瓜似一键制作U盘PE软件

wenhongang 2014-05-28 12:09:58
fbinst这个软件是用命令实现U盘PE系统的制作,我想再把这个软件包装下写个界面调用这个软件,但是这个涉及到U盘盘符以及U盘在系统的那块硬盘上我不会弄。在网上搜到个用脚本语言写的,但是杀毒软件老报毒,所以我想用VC实现。

下面是一段从fbinst源码下面拷出的帮助
void
help (void)
{
printf ("Usage:\n"
"\tfbinst [OPTIONS] DEVICE_OR_FILE COMMANDS [PARAMETERS]\n\n"
"Global Options:\n"
" --help,-h\t\tDisplay this message and exit\n"
" --version,-V\t\tPrint version information and exit\n"
" --list,-l\t\tList all disks in system and exit\n"
" --verbose,-v\t\tPrint verbose messages\n"
" --debug,-d\t\tUse the debug version of mbr\n\n"
"Commands:\n"
" format\t\tFormat disk\n"
" --raw,-r\t\tFormat with normal layout (not bootable)\n"
" --force,-f\t\tForce the creation of data partition\n"
" --zip,-z\t\tFormat as USB-ZIP\n"
" --fat16\t\tFormat data partition as FAT16\n"
" --fat32\t\tFormat data partition as FAT32\n"
" --align,-a\t\tAlign to cluster boundary\n"
" --unit-size,-u NUM\tUnit size for FAT16/FAT32 in sectors\n"
" --base,-b NUM\tSet base boot sector\n"
" --size,-s NUM\tSet size of data partition\n"
" --primary,-p NUM\tSet primary data size\n"
" --extended,-e NUM\tSet extended data size\n"
" --list-size,-l NUM\tSet size of file list\n"
" --max-sectors NUM\tSet maximum number of sectors per read\n"
" --archive FILE\tInitialize fb using archive file\n"
" restore\t\tTry to restore fb mbr\n"
" update\t\tUpdate boot code\n"
" sync\t\t\tSynchronize disk information\n"
" --copy-bpb\t\tCopy bpb from the first partition\n"
" --clear-bpb\t\tClear bpb in the boot sector\n"


比如有条命令是fbinst.exe (hd2) format --raw --force --fat32,这条命令将格式化第2快硬盘,现在我的软件要列出所有U盘盘符在一个combobox里面,让用户选择一个U盘,然后我要获取用户所选U盘在第几块硬盘,然后调用fbinst.exe软件来实现,说来也奇怪我用vc调用这个软件杀毒软件就不报毒,用脚本软件调用就报毒。


那位大神能帮帮我,我现在的问题是怎么把所有的U盘盘符获取到,怎么由U盘盘符确定这个U盘是电脑上的第几块硬盘。
...全文
743 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
shen_wei 2014-06-04
  • 打赏
  • 举报
回复
你可以先做USB端口扫描,获取当前U盘信息。。
xiaohuh421 2014-06-02
  • 打赏
  • 举报
回复
循环 A到Z盘符 for(TCHAR cDisk = 'A'; cDisk<='Z'; ++cDisk) //判断磁盘类型 CString Str; Str += cDisk; Str += TEXT(":\\"); UINT diskType = GetDriveType(Str); //获取磁盘类型的 switch(diskType) { case DRIVE_UNKNOWN: case DRIVE_NO_ROOT_DIR: case DRIVE_REMOTE: ---------->这就是可移动磁盘( U盘, 移动硬盘等等) case DRIVE_CDROM: //光驱 case DRIVE_RAMDISK: break; case DRIVE_REMOVABLE: case DRIVE_FIXED:
wenhongang 2014-05-31
  • 打赏
  • 举报
回复
顶下,各位帮帮慢啊
wenhongang 2014-05-28
  • 打赏
  • 举报
回复
难道没有人愿意给我指点一二吗

2,640

社区成员

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

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