众所周知,FileSystemObject组件的强大功能及破坏性是它屡屡被免费主页 Pa}vmn1$
提供商(那些支持ASP)的禁用的原因,我整理了一下,本来只找到两种方法,后来 {/<&
被某人一刺激,硬是想到第三种不为人所知的方法,呵呵,也不知道是不是这样的。 ho1F8TG=
b5Pn|5AVj
第一种:用RegSrv32 /u C:\WINDOWS\SYSTEM\scrrun.dll(win98路径)来注销该组 Q6K)EwN
件。此方法过于狠毒,属于同归于尽的方法,大家都没得用,是下招 "}! rM6 h
{76!
第二种:修改Progid的值,在ASP里调用组件的方式通常是 Set 对象名=Server. SOmn2
}
CreateObject("Progid"),这时候我们就可以通过修改注册表中的Progid值从达 [/G;XHL;?
到禁用该组件的方法。在 开始-运行中敲入regedit,然后找到HKEY_CLASSES_ROO R5"p7>
T\Scripting.FileSystemObject,这时候我们就可以更改该Progid的值了,如改 T8-$[
2
成Scripting.FileSystemObject8。这样在ASP页里就这样调用了: 5WT\0]RUa
' T]oV~H
`?x$J
6p
以下是代码片段: dK: "
<%@ Language=Vbscript%> e`r;`a&
<% l i-YkaP
Set Fs=Server.CreateObject("Scripting.FileSystemObject8") TXcKuo=
%> VaxO L61xE
{%{GZ
>{a,]q*
(如果你前面没有调用过该组件的话,则无须重启,就可以看到效果了,否则请重 L])w-
启后看效果。) jhv1 D'>6
这时候我们看看还是用原来的调用方法的结果: cqx1NWlY
}=a4uCE
以下是代码片段: `Ny8u")=
<%@ Language=Vbscript%> 1 1CJT
<% s? k[_|)!
Set Fs=Server.CreateObject("Scripting.FileSystemObject") "44?n <1
%> &J$5+"/;X
Wi^rnr'Ss
I?>T"nV +'
)\vHIXnfJ1
这时候的运行结果为: {R;M`EU>
服务器对象 错误 'ASP 0177 : 800401f3' dn_OfK
8n5nHne
Server.CreateObject 失败 Nl`ry2"<
\F~Cbj+'Nu
/aspimage/testfile2.asp, 行3 Ky#B'Bh}`g
f)Q]{ cb6
800401f3 (JW?azU
(OK,达到我们的要求) ~uadivli
该方法由于本人迟了两步,结果就让别人抢着回答了,这样极大的刺激了我,结 D'cY7P
果就产生了第三种方法。 RH]>>tJ^e
*]R0z|MW
第三种:细心的高手们会想,既然能通过修改Progid值来禁用该组件,那Clsid是 CqK#O'\
否也可以来修改呢?(OK,你想得和我一样)我们知道,除了CreateObject方法以 {yMA7W7]
外,也可以使用一般的标注建立一个组件,我们可以在ASP里面使用HTM v`^J3A
L的标注,以便在网页中加入一个组件。方法是: UUu-(H-J
*`Xx _
以下是代码片段: }Y`<(V5:
<object runat=server id=fs1 scope=page progid="Scripting.FileSystemObj bpa
O`[*
ect"></object> ]31XX=
Xe;(y "pR
8Ql'(5|T
m,C,<I|'d
Runat表示是在服务端执行,Scope表示组件的生命周期,可以选用Session,Appl ><Z3<7K9
ication或page(表示当前页面,也可缺省) <[:7#Yo
g
这种写法对我们没用,还有一种写法是: s}9tK(4v
F*t_lN5{
以下是代码片段: jUvA<r
<object runat=server id=fs1 scope=page classid="clsid:clsid的值"></obj L~y t AZ,
ect> 'h>5&=r
lc7a@qnw
bDBO+qA
/1~|jmi(
我们也可以通过修改该Clsid的值而禁用该组件,如将注册表中HKEY_CLASSES_RO 'QojSq
OT\Scripting.FileSystemObject\CLSID的值0D43FE01-F093-11CF-8940-00A0C90 (0#F]""\e
54228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最后面一位),这时候的 =4<S8Cp
写法为: )kKmgtj
rw[ {@|)'z
以下是代码片段: A]Tcj^#
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11 YQV?S
CF-8940-00A0C9054229"></object> W^.-C
^7bf8 ^`
)nHE$gVM
s
看运行结果,没问题,OK。这时候我们再用 Q &7)vs
\UqS -j|
以下是代码片段: R{uJczu
<object runat=server id=fs1 scope=page classid="clsid:0D43FE01-F093-11 ttFY
_F~S
CF-8940-00A0C9054228"></object> aq+IC@O
E\~ KVn
ITIj=!F*
1"&;1Ts
这时候就出错了。 w&yGYHg
Nv?-*&