|
  
- UID
- 1
- 帖子
- 738
- 精华
- 28
- 积分
- 14389
- 金币
- 2480
- 威望
- 1647
- 贡献
- 1428
|
昨天下载并且安装了Updater Application Block后,需要执行一个Deploy.vbs的文件,鄙人才疏学浅,这个小问题竟然也花费了我不少心机。
0 T. Z, Y! n) n; K3 }& I现在把结论共享一下。5 N d- G( k/ S1 p
( |. c* @* N4 W; O7 Z
首先,我的vbs文件关联已经被“豪杰”夺取了。我双击Deploy.vbs就会打开豪杰,比较郁闷。但是我用了打开方式,试了浏览器、cmd,都无济于事。
6 B% B, v! h! }$ f
' d1 l7 f/ b, r/ \" G1 Q今天,我想到这个问题后,就有想法去Microsoft的News Group上去问一问。然后又去了CSDN的全文检索。果然很争气,我的关键字只是vbs,执行,就找到了一大堆我想要的东东。了解到用wscript.exe来执行这个文件。) Y+ [8 L& o2 H1 l
* a2 ~( d! e: Z: T+ \1 y- G
在cmd里敲了wscript.exe Deploy.vbs,但是返回错误是 There is no script engine for fileextension '.vbs'。这个时候我想到了google。果然搜到了不少有用的信息,其中第一条里我就找到了解决办法。原因是我的vbs关联已经丢失了,必须显示指定。8 r( g( q- o' I" }9 S y) j
+ ~; J* v+ H4 A% B0 t
cmd中敲入 wscript.exe //e:vbscript Deploy.vbs。果然成功!!!
: K, x; T* g0 {% z% `; J/ i) r4 C* S4 E# R0 |) E: d
8 d6 \" A" W: E) Q+ t- r3 g2 S
- O) z: J/ Z& o* J- `总结:用wscript.exe 执行类似vbs这类的脚本文件。如果文件关联丢失。可以用//e:vbscript." B+ @- {7 h6 g, I M4 H" F2 W
: [/ ?- h, w$ J( V3 C4 Z3 W% E
# }8 w: S/ C6 A, B
9 P5 Y4 x |; [" z% B* v, J7 L& I附上我找到的很有帮助的文章。
3 I; b4 }1 x! M5 F+ ?6 ?: \! s7 @6 Y- g% ?3 t
$ x! w; X5 Z7 b5 [) D! h t9 _
8 i/ N% Z8 K3 e H+ B3 q一、什么是WSH? $ P# |2 j( [9 Z( h
" V; i7 \1 t1 e' ?+ U* X% U
WSH是Windows Scripting Host(Windows脚本主机)的缩略形式。WSH这个概念最早出现于Windows98操作系统,是一个基于32 位 Windows 平台、并独立于语言的脚本运行环境。比如:你自己编写了一个脚本文件,如后缀为 .vbs 或.js 的文件,然后在 Windows 下双击 并执行它,这时,系统就会自动调用一个适当的程序来对它进行解释并执行,而这个程序,就是Windows Scripting Host,程序执行文件名为 Wscript.exe (若是在DOS命令提示符下,则为Cscript.exe)。
- I* b/ c3 ^' B7 F" H; S: ]; Q. J$ [- Z
9 l* Q0 f6 ^( M4 B9 E2 [9 l% N
. `& H% ]. E" q9 \
想知道自己的机器上有没有WSH吗?查看一下你的机器里有没有“Wscipt.exe”或者“Cscript.exe”这两个文件就可以了。如果找到,恭 喜你!你已经安装了WSH。否则,自己手动安装吧: " E) i, r: t. P
: q8 b2 q: z; M% z
在Windows98环境下,WSH是作为操作系统的一个组件自动安装的,如果不慎丢失了这个组件,可以从依次打开“控制面板-->添加/删除程序--〉Windows安装程序--〉附件”,然后将“Windows ScriptingHost”前的划上“√”,再确定即可完成WSH组件的安装。
3 t" O: g6 x+ m+ Y1 }4 o+ t: K6 t8 s2 t7 | c! a" n. f8 }4 ^* R
I5 O6 n2 W4 ` I3 o b' U! J% B
; @4 a; e+ W# e* _ 二、脚本语言与WSH的关系 : h. V' w, p' F
: O& L7 }' [9 Z2 S 大家知道,脚本语言(包括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]在这些被植于网页的脚本语言中,绝大多数是与网络安全无关的。但也有少数别有用心的好事者,把一些严重危及网络安全的代码(我们常常称之为“恶意代码”,他们通常都要通过修改注册表达到“恶意”的目的!),混放在正常的脚本之中,常常让我们防不胜防。但是,如果我们了解一点关于脚本语言的知识,这些“伎俩”都是非常容易识破的。还是让我们从几个简单 的实例开始吧……
4 o5 X* G6 ^" ~# \% r
% |3 F/ _: b* h9 d& ^" d$ Y
; O: U e& _/ s5 q' _1 p: ?7 L+ x" o% z: {$ A+ D
三、WSH应用举例
- h& ?, `9 \ y7 r* h$ D9 s+ M& V+ k4 W _6 T0 b5 i& h
WSH可以处理脚本程序,怎样阅读和编写WSH的脚本源文件呢?只要你有一点Basic(会VB的编程更好,呵呵)语言的基础,学会看懂WSH脚本语言的程序并不是一件难事。去C:WINDOWSSAMPLESWSH目录以下将看看吧!里面提供了几类经典的脚本例子,而且分别提供了VBScript和 javascript两个版本,我们只要用记事本打开它们并仔细研究就不难学到一些基本的WSH应用。
9 X$ e, q8 g$ N# `; A, j! V( f( d I
7 g) k: C6 L/ a$ o! a } `# `$ H' s, _6 y/ ~
你只需在记事本中依次输入以下每个实例中的代码,并保存为相应的“*.vbs”文件,双击这个文件,你就可以看到相应的效果了。
6 c8 I- K4 {4 H3 F3 p& g$ i5 W- z- Y9 X$ S, ^3 \$ n# s
( [4 ?" U8 j) m. i# `
9 Q$ l( t- K) s' ~ }
* y6 U2 h7 n2 h s/ R! c6 }5 T% ~3 b" y! t1 R4 s
; k( l- w# ^; {2 r) C9 b
7 S" |3 ` A$ f, C- MQ: How do I open script files? Trying the above solution makes Windows XP throw an error?7 w- E; m9 _3 M1 L
0 W7 t0 [1 o& i4 r# ]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.
1 C( u$ n% r5 M; n7 i1 Q! U4 n! w$ \2 Q- A
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.
0 G- o. J5 Z- O# n, C' Q& v
' X1 ~5 b+ ~ S0 h/ E; \The solution to this problem is to run the script as:
; i* E/ B1 j1 Y8 f, @9 K
! y% \6 e3 B- a2 i+ j& }# Dwscript //e:vbscript c:\path\to cript.vbs4 C3 ^9 U5 H& M- \# H# U% ? @% [
2 g& B+ u( W) L5 A. Y& Y6 SThe "//e:vbscript" tells wscript to use the vbscript engine to parse the script. It will then run correctly.
1 `* K2 Q& q. j: f; `8 G# K% o8 w$ Y( _9 U: P7 P
A few alternative solutions, perhaps easier are:
! Z4 v: a" J8 y7 Q$ ~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... 9 @9 f+ d5 [9 q9 n$ M' h
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. |
|