|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14323
- 金币
- 2447
- 威望
- 1647
- 贡献
- 1395
|
昨天下载并且安装了Updater Application Block后,需要执行一个Deploy.vbs的文件,鄙人才疏学浅,这个小问题竟然也花费了我不少心机。9 H6 j) Y- |4 Z( B n. r8 U
现在把结论共享一下。, @: X0 j; n* _9 J- m( F* B0 ^1 l
" {) m* D3 g, ^" |: z" J, P8 x# B0 L首先,我的vbs文件关联已经被“豪杰”夺取了。我双击Deploy.vbs就会打开豪杰,比较郁闷。但是我用了打开方式,试了浏览器、cmd,都无济于事。% j" x* j% e- _% b0 \: W
. x& O0 b" Q9 d
今天,我想到这个问题后,就有想法去Microsoft的News Group上去问一问。然后又去了CSDN的全文检索。果然很争气,我的关键字只是vbs,执行,就找到了一大堆我想要的东东。了解到用wscript.exe来执行这个文件。
! v3 \2 c k `5 M% n9 A& f: g7 S; }1 V7 N; P
在cmd里敲了wscript.exe Deploy.vbs,但是返回错误是 There is no script engine for fileextension '.vbs'。这个时候我想到了google。果然搜到了不少有用的信息,其中第一条里我就找到了解决办法。原因是我的vbs关联已经丢失了,必须显示指定。
8 y7 d" B5 {5 m3 |+ [+ o$ g8 N% q# j3 p; l, q1 {" m# J) I) q
cmd中敲入 wscript.exe //e:vbscript Deploy.vbs。果然成功!!!
, f! B" L' b% Q6 D: [' F- h
4 x# i+ b/ b0 F- \5 n
: @! W. g# E- F! s1 t! L: [. f$ x" A% l, W- q, O @6 x( P
总结:用wscript.exe 执行类似vbs这类的脚本文件。如果文件关联丢失。可以用//e:vbscript.( N: K' X( P' Z! T
1 V7 e" `6 k& H$ ] : x2 L7 @, s/ w5 e; ]
, }1 y- w/ H. m% j
附上我找到的很有帮助的文章。
. |7 \/ E1 n( f7 ^7 x6 U. H g: z+ s" j! b6 |' {% d
" W1 e+ @( U, B; v
/ m* b1 X) k0 W5 r( q
一、什么是WSH? 2 O% m% O; L( L& h0 M" h! Y: q
+ u4 X5 Q Q, s& X- I5 ~' @0 e ~- \" Q, z WSH是Windows Scripting Host(Windows脚本主机)的缩略形式。WSH这个概念最早出现于Windows98操作系统,是一个基于32 位 Windows 平台、并独立于语言的脚本运行环境。比如:你自己编写了一个脚本文件,如后缀为 .vbs 或.js 的文件,然后在 Windows 下双击 并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是Windows Scripting Host,程序执行文件名为 Wscript.exe (若是在DOS命令提示符下,则为Cscript.exe)。 7 s0 ?$ m" l: a* m: G
! N* d3 w, B D+ H, h1 Q! o' g9 ` : S% y+ v, O }/ g
8 N0 i4 x' O: m) k3 P" ?2 z 想知道自己的机器上有没有WSH吗?查看一下你的机器里有没有“Wscipt.exe”或者“Cscript.exe”这两个文件就可以了。如果找到,恭 喜你!你已经安装了WSH。否则,自己手动安装吧:
. G1 C. h4 h0 @2 m1 G6 a& [# W% h, a0 v! D; z# y& d
在Windows98环境下,WSH是作为操作系统的一个组件自动安装的,如果不慎丢失了这个组件,可以从依次打开“控制面板-->添加/删除程序--〉Windows安装程序--〉附件”,然后将“Windows ScriptingHost”前的划上“√”,再确定即可完成WSH组件的安装。
6 L8 C( ~6 `& n9 o5 T, I& ~* W: ]5 S- b X; k, m
7 _% f' M; X" J! i: F0 r9 W9 r5 @9 [* R
, v, C+ U/ t6 r5 P- ^/ _$ J$ ~ 二、脚本语言与WSH的关系
^: T* ]: c$ Q! Q* P# i! f; c1 d& [1 Q" [
大家知道,脚本语言(包括javascript和VBscript语言等)经常会被植入网页之中(其中包括 HTML 页面客户机端和 ASP页面服务器端) 。对于植入 HTML 页面的脚本,其所需的解析引擎会由 IE 这样的网页浏览器载入;对于植入 ASP页面的脚本,其所需的解析引擎会由 IIS( Internet Information Services)提供。而对于出现在 HTML 和ASP 页面之外的脚本(它们常以独立的文件形式存在),就需要经由 WSH 来 处理了。需要说明的是:WSH 要想正常工作,还要安装IE 3.0或更高版本的 IE,因为 WSH 在工作时会调用 IE 中的 VBScript 和 javascript 解析引擎。[未结束][iduba_page]在这些被植于网页的脚本语言中,绝大多数是与网络安全无关的。但也有少数别有用心的好事者,把一些严重危及网络安全的代码(我们常常称之为“恶意代码”,他们通常都要通过修改注册表达到“恶意”的目的!),混放在正常的脚本之中,常常让我们防不胜防。但是,如果我们了解一点关于脚本语言的知识,这些“伎俩”都是非常容易识破的。还是让我们从几个简单 的实例开始吧……! K) }) B8 k0 `/ n& S
& |' R } N1 a. F
) L4 R, u; @1 b: R, w& R
E8 Q3 X% \# g3 x
三、WSH应用举例 $ N+ W, n2 m2 I. {: I1 S. \- C
* p* H2 Q5 X! V5 B3 Q) Y
WSH可以处理脚本程序,怎样阅读和编写WSH的脚本源文件呢?只要你有一点Basic(会VB的编程更好,呵呵)语言的基础,学会看懂WSH脚本语言的程序并不是一件难事。去C:WINDOWSSAMPLESWSH目录以下将看看吧!里面提供了几类经典的脚本例子,而且分别提供了VBScript和 javascript两个版本,我们只要用记事本打开它们并仔细研究就不难学到一些基本的WSH应用。 4 s9 X$ |3 U. X- W- }$ `' G7 r% j
% ~2 S/ i. [% Y, x- I& `
G* h+ C5 S- z4 o: N! i6 C3 P8 h8 W7 T2 |0 c! P
你只需在记事本中依次输入以下每个实例中的代码,并保存为相应的“*.vbs”文件,双击这个文件,你就可以看到相应的效果了。 o- H A V( j: [% u
; N0 D& I1 Y8 D% V% q
- \( W f8 M2 g* I6 }
, `6 ]" h/ A8 d$ W# l: x
$ u- i9 F( |9 u7 i; d. q X- G+ S
4 z& P [ v7 S* ~, B$ h
! {% R* {( P- `. Z3 v
Q: How do I open script files? Trying the above solution makes Windows XP throw an error?) s: i+ Y/ C, Z% T o5 U
' O" V9 N) ]/ \- g8 }: X, W% A
A:This is similar to the *.js association problem. Some machines seem to,for some reason, lose their *.vbs association. It's not that the filesopen with dreamweaver or whatever -- it's that the machine just doesn'tknow how to run them. If you have a scheduled task, "Could not run"will appear in the status column.
8 Y3 I K: |& F8 X( P4 \ e6 N0 \/ k6 W, H6 G' r# M
So, you're a smart person andread through the FAQ. You find the *.js extension problem, and you trythat fix: you run it as "wscript c:\path\to cript.vbs". But that, inturn, produces a pop-up error, this time a "Windows Scripting Host"error: "There is no script engine for file extension '.vbs'." So, forsome reason, wscript doesn't even know what to do with *.vbs files.
7 | a* `& U% O6 T. k$ W, i- w* G7 h7 k ]4 S J4 o) L
The solution to this problem is to run the script as:
- G f2 _' ^2 r; E1 U) |
" Q! G" E2 @- C6 h- @wscript //e:vbscript c:\path\to cript.vbs& ]# g% o9 M; h V7 L( T: j# |1 z
+ S& v! M/ ?# w/ `: ?
The "//e:vbscript" tells wscript to use the vbscript engine to parse the script. It will then run correctly.
, Q; |: T. k% {: t4 v
9 f4 X7 N1 h2 e) M( m/ Q1 {A few alternative solutions, perhaps easier are:
' S: T1 ]( _ J/ ~Renameit .vbe (VBScript Encoded Script File). Not sure if this is a bad idea,but it seemed to work for some scripts. Make a new association for VBS.Open up my computer, select Tools menu-> Folder Options, and go tothe File Types tab. There probably isn't a VBS association listed ifyou have this problem. Select New, type in VBS, and hitAdvanced>>. Then, from the pull-down menu, select "VBScriptScript File". Making this selection automatically takes care of theassociation, along with the //e:vbscript problem. This is probably the"correct" solution...
' |1 R9 B( I) P7 u; G% I4 U9 WThis problems usually occurs only on WindowsXP machines, but the cause is not known. A Microsoft KB article on thisissue can be found here. Thanks goes to Bob_2k for writing this FAQentry. |
|