首页 编程ASPServer 对象, ASP 0177 (0x800401F3)无效

Server 对象, ASP 0177 (0x800401F3)无效

解决方法

1、首先在系统盘中查找scrrun.dll(系统盘:windowssystem32),如果存在这个文件,请跳到第三步,如果没有,请执行第二步。
2、在安装文件目录i386中找到scrrun.dl_,用winrar解压缩,得scrrun.dll,然后复制到你的系统盘:windowssystem32目录中。
3、在开始菜单运行,输入如下命令:
注消FSO组件:RegSvr32 /u %windir%SYSTEM32scrrun.dll
启用FSO命令:RegSvr32 %windir%SYSTEM32scrrun.dll
4、多次注消、启动后还是出现同样的错误,原因很有可能是IIS用户没有启用FSO的权限。在 “开始”-“运行”中敲入regedit,然后找到HKEY_CLASSES_ROOTScripting.FileSystemObject项,右击权限,加入everyone或internet来宾帐号(IUSR…)用户,并使其权限为“完全控制”和“读取”,(我将Scripting.FileSystemObject项下的CLSID也更改了权限)然后全部确定,重新启动IIs即可搞定。

FSO组件的相关信息
FSO介绍
FSO(FileSystemObject)是微软ASP的一个对文件操作的组件,在Windows操作系统中,默认都安装了这个组件,整个服务器上所有的虚拟主机都能使用它。该组件可以处理服务器端的文件、文件夹和驱动器,进行读取、新建、修改、删除目录以及文件的操作。这是ASP编程中非常有用的一个组件。具体功能如下:
1、可检查文件、文件夹是否存在,可建立/删除/移动/ 文件或文件夹。
2、可更改文件、文件夹的名字。
3、通过 TextStream 对象创建和读写文本文件,在简单的数据操作时可代替数据库操作。
虚拟主机客户可以在自己的ASP网页里面直接就对该组件编程,从而查看同一服务器上其他网站的内容,修改、删除服务器上的文件,控制该服务器。即使网站的拥有者没有做这样的事情,有些黑客还利用ASP程序的漏洞,上传含有FSO功能的ASP程序,从而控制整个网站甚至整个服务器。
有些ASP程序利用这个组件可以查看电脑里面的文件,甚至删除修改文件.
潜在问题:
采用IIS的虚拟主机,多个网站共存于一台服务器。服务器为我们提供实用的FSO文件操作组件,同时黑客却可以利用它来非法访问其他网站。
虚拟主机服务器架设在Windows 2000 SERVER的IIS上,且同一个服务器上运行着多个网站,这些虚拟主机都面临着严重的安全威胁:其中任何一个网站的管理者,只要运行一段特殊功能的ASP程序,就能轻易修改同一个服务器上其他网站的文件,甚至服务器上的任何文件(包括Windows系统文件),这种极具危险的ASP程序,经常是通过服务器提供FSO来实现的,网络上随处可得这类程序的源代码。
系统工具:
在IIS里,可以设置每个站点的匿名访问所使用的帐号,默认为IUSR_ HostName,这一方法的原理就是针对每一个共享主机用户分别设置一个Windows帐号,如IUSR_HostName1,IUSR_ HostName 2等,然后将每一个用户限制在各自的Web目录下。
如果是几十个用户分别访问几个目录的话只能手动加了,但是如果是几十个用户访问某一个目录的话你可以将这几十个用户加入你建的某一个组,然后再将组设为允许对这个目录的访问

解决办法:
第一种:禁用FSO组件。用RegSrv32 /u C:WINNTSYSTEM32SCRRUN.DLL来注销该组件。这种做法把FSO功能从服务器提供的功能中暂时删除,作用是全局性的,对于这个服务器中所有的虚拟主机来讲,都再也不能使用FSO功能。对于这种做法,受影响的包括系统管理员本身,管理员可能有些场合下必须用到FSO组件,怎么办?
第二种:修改FSO在注册表中的Progid值。ASP调用组件的方式通常是 Set 对象名=Server.CreateObject(“Progid”),FSO的Progid为Scripting.FileSystemObjec。我们可以通过修改注册表中的Progid值从达到禁用该组件的方法。运行REGEDIT命令,调出注册表编辑工具,然后找到HKEY_CLASSES_ROOTScripting.FileSystemObject,这时候我们就可以更改该Progid的值了,如把Scripting.FileSystemObjec改成Scripting.NewFSO。对于各个虚拟主机的用于,他们都以为主机提供的FSO应该是使用正常的语法来调用,如:
<%
Set Fso=Server.CreateObject(“Scripting.FileSystemObject”)
%>
这时候的会发现程序运行错误,报告如下:
服务器对象 错误 ”ASP 0177 : 800401f3”
Server.CreateObject 失败
/test.asp, 行2
无效的类别字符串
这种方法很好地解决了第一种方法带来的矛盾,这时系统的FSO功能并没有被废去,只是换了个名字,使用正确的语句,还是能够使用这个组件的。而对于服务器的系统管理员,他自己当然知道这时候调用FSO应该使用Scripting.NewFSO,语法为:
<%
Set Fso=Server.CreateObject(“Scripting.NewFSO”)
%>

使用 CreateObject 在 Active Server Pages (ASP) 页中创建 COM 组件可能会导致以下错误:
Microsoft VBScript runtime error ‘800a01ad’ActiveX component can’t create object
发生此错误的原因通常是,COM 对象依赖的动态链接库 (DLL) 出现以下情形之一:
• 在系统中找不到
• 不在系统路径中
• 系统由于安全设置而无法访问
参考链接:http://support.microsoft.com/default.aspx/kb/194801