现在的位置: 首页 > 综合 > 正文

关于IIS无法创建’Scripting.FileSystemObject’对象

2014年09月05日 ⁄ 综合 ⁄ 共 10315字 ⁄ 字号 评论关闭

上周不知道安装过什么软件或是什么配置,造成公司的IIS服务器中的所有ASP文件中的'Scripting.FileSystemObject'对象无法创建。经过用探针程序的探测发现'Scripting.FileSystemObject'组件服务未启动,找到大部分的网站都是讲运行regsvr32 scrrun.dll即可。

 

但实际上都未能解决问题,经过多次搜索在网上找到了以下的一篇文章是介绍出错的原因和详细的解决方法:

http://hi.baidu.com/outlookme/blog/item/046f73387f66e0fab211c705.html

 

原文如下:

今天上午在农大学校服务器上传完网站,网站地址http://202.196.80.249/jpkc/yczhaomingqin/

登入后台后,更新有关项目,提示:

Microsoft VBScript 运行时错误 错误 '800a01ad'

ActiveX 部件不能创建对象: 'Scripting.FileSystemObject'

这个错误,上网一搜说的没有开iis中自代fso组件

下面就是开启和关启FSO控件的方法
windows98系统
在DOS命令行状态输入以下命令:
关闭命令:RegSvr32 /u C:/WINDOWS/SYSTEM/scrrun.dll
打开命令:RegSvr32 C:/WINDOWS/SYSTEM/scrrun.dll
win2000系统:
在CMD命令行状态输入以下命令:
关闭命令:RegSvr32 /u C:/WINNT/SYSTEM32/scrrun.dll
打开命令:RegSvr32 C:/WINNT/SYSTEM32/scrrun.dll 
win2003:
运行regsvr32 scrrun.dll即可。
如果想关闭FSO组件,请运行 regsvr32 /u scrrun.dll即可。

我的系统是2003可是按了2003系统的方法做了n回可是还是不行,用asp探针做了测试我的系统还是不技持fso。最后在朋友的帮助下找到了解决方法。

多次注消、启动后还是出现错误,原因是没权限

,不知道怎么造成的,下边提供解决方法

权限出现了问题,打开注册表加入权限!
在 开始-运行中敲入

regedit,然后找到HKEY_CLASSES_ROOT/scrīpting.FileSystemObject

右击权限,加入

everyone,internet来宾帐号(IUSR...)用户确定,然后重新启动IIs即可搞定!

昨天在程序的时候遇到了iis不支持fso费了很大的劲才让我的iis支持了fso组件,可是在今天的调试程序又出现了

Server 对象 错误 'ASP 0177 : 800401f3'

Server.CreateObject 失败  

我把不能创建的对象输出来一看是这个Scripting.Dictionary又上网搜了下,解决的办法就是regsvr32 scrrun.dll 这问题不是我昨天已解决了吗!怎么还会出现的这个问题,我以为是我的scrrun.dll坏了,又从另一台机器上拷过了,从新注册了一下,可是问题还是存。冷静了一会,突然想了昨天的fso需要到注册表里给下权限。而这个对象也在fso组件里,可能是也需要给下权限,我就试着在注册表找了一下,还真让我发现在注册表里有这个对象,我就按着给'Scripting.FileSystemObject' 加权的方法给加权限。问题就解决了。

解决了这个又来了一个 MSWC.BrowserType 800401f3 这回我可有经验了,先是搜了一个下它是那个组件的,可能是msxml3.dll是这个。注册了一下,又去注册表打了一下,给加了权限又摆平一个。

我发现这些都是iis自代的组件,我想没有必要先去注册一下组件。而是直接去注册表给下权限就可以了,除为有可能某个组件已被卸掉了,那才需要先注册一下。

一般给组件的加权限的步骤是:

regedit,然后找到HKEY_CLASSES_ROOT下对应着的组件对象名就可以了

右击权限,加入

everyone,internet来宾帐号(IUSR...)用户确定,然后重新启动IIs即可搞定

(注:其实可以不用everyone,只要来宾帐号加入就可以了。)

iis自带的组件有:

MSWC.AdRotator   
MSWC.BrowserType  
MSWC.NextLink  
MSWC.Tools  
MSWC.Status   
MSWC.Counters   
SWC.PermissionChecker  
WScript.Shell  
Microsoft.XMLHTTP   
Scripting.FileSystemObject  
ADODB.Connection

 

 

最后送上一个简单的探针程序:

 

<% Option Explicit %>
<%
Dim ObjTotest(26,4)

ObjTotest(0,0) = "MSWC.AdRotator"
ObjTotest(1,0) = "MSWC.BrowserType"
ObjTotest(2,0) = "MSWC.NextLink"
ObjTotest(3,0) = "MSWC.Tools"
ObjTotest(4,0) = "MSWC.Status"
ObjTotest(5,0) = "MSWC.Counters"
ObjTotest(6,0) = "IISSample.ContentRotator"
ObjTotest(7,0) = "IISSample.PageCounter"
ObjTotest(8,0) = "MSWC.PermissionChecker"
ObjTotest(9,0) = "Scripting.FileSystemObject"
 ObjTotest(9,1) = "(FSO 文本文件读写)"
ObjTotest(10,0) = "adodb.connection"
 ObjTotest(10,1) = "(ADO 数据对象)"
 
ObjTotest(11,0) = "SoftArtisans.FileUp"
 ObjTotest(11,1) = "(SA-FileUp 文件上传)"
ObjTotest(12,0) = "SoftArtisans.FileManager"
 ObjTotest(12,1) = "(SoftArtisans 文件管理)"
ObjTotest(13,0) = "LyfUpload.UploadFile"
 ObjTotest(13,1) = "(刘云峰的文件上传组件)"
ObjTotest(14,0) = "Persits.Upload.1"
 ObjTotest(14,1) = "(ASPUpload 文件上传)"
ObjTotest(15,0) = "w3.upload"
 ObjTotest(15,1) = "(Dimac 文件上传)"

ObjTotest(16,0) = "JMail.SmtpMail"
 ObjTotest(16,1) = "(Dimac JMail 邮件收发) "
ObjTotest(17,0) = "CDONTS.NewMail"
 ObjTotest(17,1) = "(虚拟 SMTP 发信)"
ObjTotest(18,0) = "Persits.Mailgraph2er"
 ObjTotest(18,1) = "(ASPemail 发信)"
ObjTotest(19,0) = "SMTPsvg.Mailer"
 ObjTotest(19,1) = "(ASPmail 发信)"
ObjTotest(20,0) = "DkQmail.Qmail"
 ObjTotest(20,1) = "(dkQmail 发信)"
ObjTotest(21,0) = "Geocel.Mailer"
 ObjTotest(21,1) = "(Geocel 发信)"
ObjTotest(22,0) = "IISmail.Iismail.1"
 ObjTotest(22,1) = "(IISmail 发信)"
ObjTotest(23,0) = "SmtpMail.SmtpMail.1"
 ObjTotest(23,1) = "(SmtpMail 发信)"
 
ObjTotest(24,0) = "SoftArtisans.ImageGen"
 ObjTotest(24,1) = "(SA 的图像读写组件)"
ObjTotest(25,0) = "W3Image.Image"
 ObjTotest(25,1) = "(Dimac 的图像读写组件)"

public IsObj,VerObj

'检查组件支持情况及版本

dim i
for i=0 to 25
 on error resume next
 IsObj=false
 VerObj=""
 dim TestObj
 set TestObj=server.CreateObject(ObjTotest(i,0))
 If -2147221005 <> Err then
  IsObj = True
  VerObj = TestObj.version
  if VerObj="" or isnull(VerObj) then VerObj=TestObj.about
 end if
 ObjTotest(i,2)=IsObj
 ObjTotest(i,3)=VerObj
next

'检查组件是否被支持及组件版本
sub ObjTest(strObj)
 on error resume next
 IsObj=false
 VerObj=""
 dim TestObj
 set TestObj=server.CreateObject (strObj)
 If -2147221005 <> Err then
  IsObj = True
  VerObj = TestObj.version
  if VerObj="" or isnull(VerObj) then VerObj=TestObj.about
 end if
End sub
%>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>ASP探针</TITLE>
<style>
<!--
BODY
{
 FONT-FAMILY: 宋体;
 FONT-SIZE: 9pt
}
TD
{
 FONT-SIZE: 9pt
}
A
{
 COLOR: #000000;
 TEXT-DECORATION: none
}
A:hover
{
 COLOR: #000000;
 TEXT-DECORATION: underline
}
.input
{
 BORDER: #111111 1px solid;
 FONT-SIZE: 9pt;
 BACKGROUND-color: #ffffff
}
.backs
{
 BACKGROUND-COLOR: #6B8FC8;
 COLOR: #ffffff;

}
.backq
{
 BACKGROUND-COLOR: #FFFFFF
}
.backc
{
 BACKGROUND-COLOR: #6B8FC8;
 BORDER: medium none;
 COLOR: #ffffff;
 HEIGHT: 18px;
 font-size: 9pt
}
.fonts
{
 COLOR: #000000
}
-->
</STYLE>
</HEAD>
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" id="AutoNumber3" height="0" width="100%">
<tr> <td align="center"><p><font class=fonts>服务器的有关参数</font> </p>
                          <table width=600 border=0 cellpadding=0 cellspacing=1 bgcolor="#6B8FC8">
                            <tr bgcolor="#FFFFFF" height=18>
         <td align=left>&nbsp;服务器名</td><td>&nbsp;<%=Request.ServerVariables("SERVER_NAME")%></td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;服务器IP</td><td>&nbsp;<%=Request.ServerVariables("LOCAL_ADDR")%></td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;服务器端口</td><td>&nbsp;<%=Request.ServerVariables("SERVER_PORT")%></td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;服务器时间</td><td>&nbsp;<%=now%></td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;IIS版本</td><td>&nbsp;<%=Request.ServerVariables("SERVER_SOFTWARE")%></td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;脚本超时时间</td><td>&nbsp;<%=Server.ScriptTimeout%> 秒</td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;本文件路径</td><td>&nbsp;<%=server.mappath(Request.ServerVariables("SCRIPT_NAME"))%></td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;服务器CPU数量</td><td>&nbsp;<%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%>
                                个</td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;服务器解译引擎</td>
                              <td>&nbsp;<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %></td>
                            </tr>
                            <tr bgcolor="#FFFFFF" height=18>
                              <td align=left>&nbsp;服务器操作系统</td><td>&nbsp;<%=Request.ServerVariables("OS")%></td>
                            </tr>
                          </table>
                          <br>
                           <font class=fonts>组件支持情况</font>
<%
Dim strClass
 strClass = Trim(Request.Form("classname"))
 If "" <> strClass then
 Response.Write "<br>您指定的组件的检查结果:"
 ObjTest(strClass)
   If Not IsObj then
  Response.Write "<br><font color=red>很遗憾,该服务器不支持 " & strclass & " 组件!</font>"
   Else
  Response.Write "<br><font class=fonts>恭喜!该服务器支持 " & strclass & " 组件。该组件版本是:" & VerObj & "</font>"
   End If
   Response.Write "<br>"
 end if
 %> <br>
 ■ IIS自带的ASP组件
 <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#6B8FC8" width="600">
<tr height=18 class=backs align=center> <td width=320>组 件 名 称</td><td width=130>支持及版本</td></tr>
<%For i=0 to 10%> <tr height="18" class=backq> <td align=left>&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td><td align=left>&nbsp;
<%
  If Not ObjTotest(i,2) Then
   Response.Write "<font color=red><b>×</b></font>"
  Else
   Response.Write "<font class=fonts><b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
  End If%> </td></tr> <%next%> </table><br>
  ■ 常见的文件上传和管理组件
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#6B8FC8" width="600">
<tr height=18 class=backs align=center> <td width=320>组 件 名 称</td><td width=130>支持及版本</td></tr>
<%For i=11 to 15%> <tr height="18" class=backq> <td align=left>&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td><td align=left>&nbsp;
<%
  If Not ObjTotest(i,2) Then
   Response.Write "<font color=red><b>×</b></font>"
  Else
   Response.Write "<font class=fonts><b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
  End If%> </td></tr> <%next%> </table><br>
  ■ 常见的收发邮件组件
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#6B8FC8" width="600">
<tr height=18 class=backs align=center> <td width=320>组 件 名 称</td><td width=130>支持及版本</td></tr>
<%For i=16 to 23%> <tr height="18" class=backq> <td align=left>&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td><td align=left>&nbsp;
<%
  If Not ObjTotest(i,2) Then
   Response.Write "<font color=red><b>×</b></font>"
  Else
   Response.Write "<font class=fonts><b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
  End If%> </td></tr> <%next%> </table><br>
  ■ 图像处理组件
  <table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#6B8FC8" width="600">
<tr height=18 class=backs align=center> <td width=320>组 件 名 称</td><td width=130>支持及版本</td></tr>
<%For i=24 to 25%> <tr height="18" class=backq> <td height="39" align=left>&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td><td align=left>&nbsp;
<%
  If Not ObjTotest(i,2) Then
   Response.Write "<font color=red><b>×</b></font>"
  Else
   Response.Write "<font class=fonts><b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
  End If%> </td></tr> <%next%> </table><br>
  <font color="#000000" class=fonts>其他组件支持情况检测</font><br>
在下面的输入框中输入你要检测的组件的ProgId或ClassId。
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#6B8FC8" width="600">
<form action=<%=Request.ServerVariables("SCRIPT_NAME")%> method=post id=form1 name=form1>
<tr height="18" class=backq> <td align=center height=30> <input class=input type=text value="" name="classname" size=40>
<input type=submit value=" 确 定 " class=backc id=submit1 name=submit1> <input type=reset value=" 重 填 " class=backc id=reset1 name=reset1>
</td></tr> </form></table>
                         </div></td></tr> </table>
</BODY>
</HTML>

 

 

抱歉!评论已关闭.