  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14249
- 金币
- 2415
- 威望
- 1647
- 贡献
- 1363
|
昨天下载并且安装了Updater Application Block后,需要执行一个Deploy.vbs的文件,鄙人才疏学浅,这个小问题竟然也花费了我不少心机。
7 s; H: H6 o* ?1 V现在把结论共享一下。
, H* E" }" S- i, A# p. R: ~/ }& h7 _9 ^: P& }& | _
首先,我的vbs文件关联已经被“豪杰”夺取了。我双击Deploy.vbs就会打开豪杰,比较郁闷。但是我用了打开方式,试了浏览器、cmd,都无济于事。
2 I6 u# A {. N! }5 ]4 e/ F' Z
, |6 { G6 y& A! d( \" _ Y/ J今天,我想到这个问题后,就有想法去Microsoft的News Group上去问一问。然后又去了CSDN的全文检索。果然很争气,我的关键字只是vbs,执行,就找到了一大堆我想要的东东。了解到用wscript.exe来执行这个文件。! H# ^' v9 L+ L# A1 [; i! O6 L
# ?$ g$ c. D0 b: T& y+ e! G
在cmd里敲了wscript.exe Deploy.vbs,但是返回错误是 There is no script engine for fileextension '.vbs'。这个时候我想到了google。果然搜到了不少有用的信息,其中第一条里我就找到了解决办法。原因是我的vbs关联已经丢失了,必须显示指定。! L* _' I5 N! k6 j& T
/ T1 O6 S& K5 ?/ g- X
cmd中敲入 wscript.exe //e:vbscript Deploy.vbs。果然成功!!!
+ o" Y; W( u8 S6 d9 C0 ]) j; D1 f6 z0 Z+ p& I0 Q+ _- c; |5 K' p
: I: h1 b9 ~+ k6 A# p8 }
0 Y" r- L9 R5 t总结:用wscript.exe 执行类似vbs这类的脚本文件。如果文件关联丢失。可以用//e:vbscript.
' b. k. I j! W( }4 q' A- e" }( `* E \: h
7 _* r* M4 M/ N7 B/ ?4 q' Z! z/ c4 y8 s A5 M1 a
附上我找到的很有帮助的文章。. D* B+ q. w7 N
+ E8 h9 D- e' R! o
+ W1 G) F6 {, P2 [3 Q) \& C6 p8 Y2 i* x. Y9 z
一、什么是WSH?
9 ?- x! d) P9 v0 J$ j1 i
9 S; K1 h9 _6 t+ r; I* n WSH是Windows Scripting Host(Windows脚本主机)的缩略形式。WSH这个概念最早出现于Windows98操作系统,是一个基于32 位 Windows 平台、并独立于语言的脚本运行环境。比如:你自己编写了一个脚本文件,如后缀为 .vbs 或.js 的文件,然后在 Windows 下双击 并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是Windows Scripting Host,程序执行文件名为 Wscript.exe (若是在DOS命令提示符下,则为Cscript.exe)。 4 h' g- S' Q+ d& P4 T
+ p$ u4 i, G8 ?6 ]3 f; s2 b0 C 7 r" S0 P2 O/ v j- e8 Q
$ [* c2 Y* K9 C7 M7 ~ 想知道自己的机器上有没有WSH吗?查看一下你的机器里有没有“Wscipt.exe”或者“Cscript.exe”这两个文件就可以了。如果找到,恭 喜你!你已经安装了WSH。否则,自己手动安装吧:
1 l. O7 Z& Q: m; V" b6 m1 ] i8 K Z( E( ?" V( G7 T
在Windows98环境下,WSH是作为操作系统的一个组件自动安装的,如果不慎丢失了这个组件,可以从依次打开“控制面板-->添加/删除程序--〉Windows安装程序--〉附件”,然后将“Windows ScriptingHost”前的划上“√”,再确定即可完成WSH组件的安装。
# ?* L, e7 }+ `. R
& {" {* Y+ w8 j2 l5 N
4 ^( A& c, A; W3 x1 d+ v( F8 y4 ]& j9 Y( w5 e
二、脚本语言与WSH的关系
, T4 b. r' ?1 h
6 {- M, z$ I* ]" ^. y- A/ [( x) o( r 大家知道,脚本语言(包括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]在这些被植于网页的脚本语言中,绝大多数是与网络安全无关的。但也有少数别有用心的好事者,把一些严重危及网络安全的代码(我们常常称之为“恶意代码”,他们通常都要通过修改注册表达到“恶意”的目的!),混放在正常的脚本之中,常常让我们防不胜防。但是,如果我们了解一点关于脚本语言的知识,这些“伎俩”都是非常容易识破的。还是让我们从几个简单 的实例开始吧……! k6 @3 X0 e3 f" i7 p
( S" e4 n0 V* W/ A! @, R- E' ] 2 ^. }3 k0 r0 f! Q2 {
, ^" |4 L8 M/ D( `* R
三、WSH应用举例
* ^8 }- F. `. Q
4 Y6 }/ p. Q3 J9 K: [ WSH可以处理脚本程序,怎样阅读和编写WSH的脚本源文件呢?只要你有一点Basic(会VB的编程更好,呵呵)语言的基础,学会看懂WSH脚本语言的程序并不是一件难事。去C:WINDOWSSAMPLESWSH目录以下将看看吧!里面提供了几类经典的脚本例子,而且分别提供了VBScript和 javascript两个版本,我们只要用记事本打开它们并仔细研究就不难学到一些基本的WSH应用。
# p' T3 B+ S. s' d% c6 t u1 q4 Y' i$ S& t; S `9 f1 ~% o
+ n( |" z$ E5 J7 D. z- K: R
; d8 M/ T! @8 G 你只需在记事本中依次输入以下每个实例中的代码,并保存为相应的“*.vbs”文件,双击这个文件,你就可以看到相应的效果了。
6 m% _6 {* G5 L& Q1 N, a% Z6 y% U" R, ^ T
# R2 E! A5 ?) k* @' i9 p9 O g
$ L; M9 V" k* c1 ~
* A/ U' n+ ^ w$ m P2 N
! ~# K+ m4 M8 E0 `/ g2 E% I% _
- X G; k5 W) P. z& V* d6 @
; Y' ]8 f7 _4 n* l$ F7 N* \Q: How do I open script files? Trying the above solution makes Windows XP throw an error?
8 k7 N/ m1 P8 F2 D
9 {0 {. \9 }8 e2 d; Z. kA: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.
. @, c6 U! ~. j/ D0 V/ T, W+ V7 U C
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.- a1 w( X" M3 G" R$ t
! a, W2 t) A& Q- }
The solution to this problem is to run the script as:
3 B: k" J/ V5 ^" e# y7 p7 w8 L% U/ x2 V; K! I" `7 h
wscript //e:vbscript c:\path\to cript.vbs
* G5 l6 H! U0 t" @% j. j3 u; n$ G' i: J: A' ~+ L, a
The "//e:vbscript" tells wscript to use the vbscript engine to parse the script. It will then run correctly.
' V( O3 x% Z8 g1 C1 p
4 q+ b1 P1 Y& DA few alternative solutions, perhaps easier are:' M- ?1 b$ x4 v7 t( ]% x
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... ) K4 W4 A) }3 ?
This 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. |
|