当前位置:首页 > 虚拟机 > 正文

vbs关闭后还能用虚拟机吗

vbs实现打开D盘下的几个后缀vmx的文件

您应该做的件事是查看目录中的所有文件和文件夹。
步是扫描该文件夹中的所有文件,第二步是扫描该文件夹中的所有子文件夹,然后返回步再次扫描新文件夹。直到循环结束。
所以VMX是一个虚拟机文件。例如,D盘有10000个文件,其中包括两个虚拟机。那么搜索需要10,000次比较,这本身就是代码失败。由于这对速度有影响,因此考虑其他更直接的,例如:B.记录每个程序运行后虚拟机的内存等
实验请在VB6.0中创建:FORM1(表单)、LT1(列表框)、Command1(命令按钮)
那么下面是查询文件函数
PrivateFunctionSearchFiles(PathAsString,FileTypeAsString)
DimFiles()AsString'文件路径
DimFolder()AsString'文件夹path
Dima,b,cAsLong
DimsPathAsString
IfRight(Path,1)<>"\"ThenPath=Path&"\"
sPath=Dir(Path&FileType)'查找个file
DoWhileLen(sPath)'循环直到没有文件
a=a+1
ReDimPreserveFiles(1Toa)
Files(a)=Path&sPath'合并文件目录和文件名保存在数组
mFiles(a)'添加到列表控件
sPath=Dir'查找下一个文件
DoEvents'放弃控制
循环
sPath=Dir(Path&"\",vbDirectory)'查找个文件夹
DoWhileLen(sPath)'循环直到没有剩下的文件夹
IfLeft(sPath,1)<>"”然后'防止重复搜索
OnErrorResumeNext'注意:这是为了防止文件名包含[特殊字符],例如B.某个软件生成的特殊字体文件夹,导致访问错误
IfGetAttr(Path&"\"&sPath)AndvbDirectoryThen'如果是文件夹。。。。。。
b=b+1
ReDimPreserveFolder(1Tob)
Folder(b)=Path&sPath&"\"'将目录和文件夹名组合成一个新目录,保存在数组中
EndIf
EndIf
sPath=Dir'查找下一个文件夹
DoEvents'给予控制以防止暂停动画
循环
Forc=1Tob'使用递归循环遍历所有目录
SearchFilesFolder(c),FileType
Next
EndFunction
然后,写入在COMMOND1中:
PrivateSubCommand1_Click()
'SearchFiles"d:\","*"'搜索所有文件
'SearchFiles"d:\","*.exe"'搜索所有exe文件
SearchFiles"d:\","*anno*.exe"'搜索名称包含:]exe-File
EndSub
两个参数的文件,个参数为,可与(必选参数)配合使用,第二个参数为过滤规则,*表示全部,*。?这就是扩张吗?对了,第三个就是扩张?名称包含?(必要参数)
直接实验即可。希望对您有所帮助!

虚拟机故障---求教

卸载后,直接删除VM安装目录,然后重新安装。没有什么是不能解决的。
不过我建议您使用安装版本。

vb的问题.大家帮帮忙,小弟谢过了!

当程序退出时生成一个批处理并运行这个批处理。在批处理中添加延迟代码,等待一段时间,确保程序已经完全关闭。执行批量删除代码,最后删除批处理本身。以前已经这样做过,可以实现自身的大规模删除。总结一下程序自删除已经不是什么新鲜话题了,对于各位大虾来说也比较容易。但想想自己刚学的时候遇到的各种错误,觉得有必要把自己所知道的都总结一下。这个总结一下,希望对新手的学习有所帮助。程序自删除广泛用于卸载程序结束时的自删除(环保!)。当然,更常见的是、首次安装后自动销毁^*^。至于用来做什么,就看你自己了!经典自删除说到程序自删除,就不得不提到GaryNebbett等大虾写的代码。这是一个经典!代码采用C语言嵌入式汇编asm:在Win9x下,只要先对exe本身句柄进行FreeLibrary作,就可以取消exeIMAGE在内存中的映射,然后就可以通过调用DeleteFile来删除自己的文件了。Win9x下代码如下[selfkill-9x.c]:#include"windows.h"intmain(intargc,char*argv[]){charbuf[MAX_PATH];HMODULEmodule;module=GetModuleHandle(0);GetModuleFileName(module,buf,MAX_PATH);__asm{leaeax,bufpush0push0pusheaxpushExitProcesspushmodulepushDeleteFilepushFreeLibraryret}return0;}在WinNT/2K下,需要先调用CloseHandle关闭exe文件本身对应的IMAGE的句柄HANDLE[硬编码为4],然后调用UnmapViewOfFile释放另一个对应的IMAGEHANDLE,并删除内存中程序自己的映射对象,最后就可以使用DeleteFile删除自身了!(注:此不适用于WinXP!)WinNT/2K下代码如下[selfkill-nt.c]:#include"windows.h"intmain(intargc,char*argv[]){charbuf[MAX_PATH];HMODULEmodule;module=GetModuleHandle(0);GetModuleFileName(module,buf,MAX_PATH);CloseHandle((HANDLE)4);__asm{leaeax,bufpush0push0pusheaxpushExitProcesspushmodulepushDeleteFilepushUnmapViewOfFileret}return0;}对于Win9x和WinNT/2K合并以上代码,即执行两个平台使用的所有API代码。虽然在一个平台上,可能有几个API运行失败,也可能有几个API运行成功,但最终的结果都是exe程序文件在退出前将自身删除。!Win9x和WinNT/2K下的代码如下[selfkill-9x+nt.c]:#include"windows.h"intmain(intargc,char*argv[]){charbuf[MAX_PATH];HMODULEmodule;module=GetModuleHandle(0);GetModuleFileName(module,buf,MAX_PATH);CloseHandle((HANDLE)4);__asm{leaeax,bufpush0push0pusheaxpushExitProcesspushmodulepushDeleteFilepushmodulepushUnmapViewOfFilepushFreeLibraryret}return0;}因为我是在Win32下学习汇编[MASM32],所以在汇编中又写了一遍,但是结果但发现每次执行都失败,出现如图1所示的错误,=================这里图1=====================通过反汇编对比发现原来,由于MASM32编译器对API调用的编码与C编译器不同,使用FreeLibrary或UnmapViewOfFile取消程序内存的映射后,调用DeleteFile时引用了IMAGE映射[JMPDeleteFile]中的代码,导致读取内存时执行错误。。错误分析普通程序进行API调用时,编译器会将一条API调用语句编译成若干参数推送指令,后面跟着一条间接调用语句(这里指的是Microsoft编译器,Borland编译器使用JMPDWORDPTR[XXXXXXXXh])如下形式:pusharg1pusharg2...calldwordptr[XXXXXXXXh]XXXXXXXXh位于程序映像的导入(ImportSection)部分。当程序被加载并运行时,加载器负责将API函数的添加到其中;1:用MASM32编译的程序的API函数调用格式为:Callcapi;………………capi:jmpdwordptr[XXXXXXXX];XXXXXXXX存储被调用API函数的真实。其中,jmpdwordptr[XXXXXXXX]指令是由“编译器”自动添加到程序所有代码后面的。这种调用的额外优点是,多次调用同一API时可以减少代码大小。<哈哈:)个人意见!>2:用C编译的程序的API函数调用格式为:Calldwordptr[XXXXXXXX];在XXXXXXXX中存储的是被调用的API函数的真实。正是由于上述API函数的调用格式不同,导致使用MASM32编译的程序无法删除自身,因为当调用UnmapViewOfFile时,代码段中jmpdwordptr[XXXXXXX]指令所在的代码段变得不可读,随后通过删除文件