ASP:ActiveX不能创建Scripting.FileSystemObject对象解决办法

今天遇到个问题,一个ASP网站生成静态页面时报错:

Microsoft VBScript 运行时错误 错误 '800a01ad'
ActiveX 部件不能创建对象: 'Scripting.FileSystemObject'

其实这个问题比较常见,报错原因是服务器不支持FSO组件。像风讯、科汛、动易这些ASP的主流CMS系统中经常会遇到这种情况,因为他们都是采取静态生成机制的,需要FSO组件支持。在开始之前,你有必要先用ASP探针测试下服务器对FSO组件的支持情况,通常我们使用的是Windows 2003系统的服务器。
下面说下我的具体解决思路,对每一种可能会产生报错的原因都作了相应分析,希望对你能有所帮助。

1)“scrrun.dll”文件未注册。行C:\WINDOWS\system32文件夹下,看下有没有scrrun.dll文件。如果没有,就去系统安装目录i386文件夹中拷贝一个过来。接下来,开始菜单->运行以下命令注册一下FSO组件即可:
regsvr32.exe %windir%/system32/scrrun.dll这样就开启了服务器对FSO组件的支持,如果你想关闭FSO组件,则运行以下命令:

regsvr32.exe /u %windir%/system32/scrrun.dll正常到这里,你的问题就可以解决了。

2)如果还不行,检查一下浏览器是否禁用了ActiveX控件。正常是不会的,除非是服务器,安全级别才会严格限制。如果存在这种情况,那就把浏览器的安全级别调整为中低即可。
3)你的服务器本身就不支持FSO组件。
4)考虑权限问题。依次执行如下操作:
开始菜单->运行->regedit->确定,依次找到HKEY_CLASSES_ROOT\Scripting.FileSystemObject,右键“权限”,加上Everyone、Internet来宾帐号(IUSR...)用户的权限,重启IIS即可解决。
5)附:服务器不支持Scripting.Dictionary组件的解决办法
通过以上几步就能完美解决ActiveX创建对象失败的问题了。如果还出现不支持Scripting.Dictionary组件的问题,解决办法也是类似的,参考第一步执行regsvr32.exe %windir%/system32/scrrun.dll命令即可。如果还没解决,则考虑权限问题,可以参照第四步到注册表中给这个对象添加下权限即可。举一反三,如果再遇到类似问题的话,知道怎么去解决了吧!
6)附:Server.CreateObject 失败解决办法。我们执行程序的时候可能会提示类似错误,如下:
服务器对象 错误 'ASP 0177 : 800401f3'
Server.CreateObject 失败
/include/test.asp,行38打开test.asp,检查源码38行附近,看下创建对象的写法有没有错误,标准写法应该是:

<% Set fso = Server.CreateObject("Scripting.FileSystemObject") %>
这种情况大多是程序员粗心导致的。其实,Scripting.FileSystemObject组件是可以改名的,这样会增加服务器的安全性,我们可以在注册表中更改,方法如下:
开始菜单->运行->regedit->确定,依次找到HKEY_CLASSES_ROOT\Scripting.FileSystemObject,右键“重命名”,再执行第一步注册下scrrun.dll文件即可。注意一点,你写程序的时候要以这个新名称创建对象,否则会报错。7)附:IIS自带组件
有没有发现一点,这些问题的原因都出在IIS自身组件身上,下面提供下常见的IIS组件,以供参考:
MSWC.AdRotator
MSWC.BrowserType
MSWC.NextLink
MSWC.Tools
MSWC.Status
MSWC.Counters
SWC.PermissionChecker
WScript.Shell
Microsoft.XMLHTTP
Scripting.FileSystemObject
ADODB.Connection小结一下,关于ActiveX不能创建Scripting.FileSystemObject对象的类似问题,大体上解决办法都是类似的,主要是思想要清晰:首先考虑组件注册问题,其次是组件权限问题,如果服务器配置没有问题的话,那就仔细检查一下你的程序源码吧!

时间: 2024-10-31 00:02:41

ASP:ActiveX不能创建Scripting.FileSystemObject对象解决办法的相关文章

ASP:ActiveX不能创建Scripting.FileSystemObject对象解决办法_应用技巧

今天遇到个问题,一个ASP网站生成静态页面时报错: Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象: 'Scripting.FileSystemObject' 其实这个问题比较常见,报错原因是服务器不支持FSO组件.像风讯.科汛.动易这些ASP的主流CMS系统中经常会遇到这种情况,因为他们都是采取静态生成机制的,需要FSO组件支持.在开始之前,你有必要先用ASP探针测试下服务器对FSO组件的支持情况,通常我们使用的是Windows

Scripting.FileSystemObject对象

filesystemobject|对象     FileSystemObject对象提供对计算机文件系统的访问,它允许我们在代码内操作文本文件.文件夹及驱动器.它是脚本运行期库提供的对象之一,对于服务器ASP页面内的VBScript和JScript都有效.如果页面的扩展名为.hta(表示它们是HTA的一部分),它也可用在客户端的IE 5中.本节仅讨论在服务器上的ASP脚本如何使用FileSystemObject对象.       超级文本应用程序(HTA)由指定的"受信任的"页面组成,

当前标识没有对&quot;Temporary ASP.NET Files&quot;的写访问权限的解决办法_win服务器

在IIS上部署程序后出现错误-当前标识(NT AUTHORITY/NETWORK SERVICE)没有对"C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files"的写访问权限: 这种情况通常是因为先安装了.net Framework,然后再安装IIS服务器导致的,所以只要在IIS重新注册一遍.net Framework就可以了: 在命令行中输入命令: 复制代码 代码如下: C:/WINDOWS/Micr

win7组策略打不开 提示:MMC无法创建管理单元的解决办法

  Win7系统中的组策略是管理员为用户和计算机定义并控制程序.网络资源及操作系统行为的主要工具,以Windows中的一个MMC管理单元的形式存在,我们可以通过它设置软件或者计算机等,但是最近有使用win7 32位系统的用户反映说他在打开组策略编辑器的时候系统却提示"MMC未能创建管理单元.管理单元可能未正确安装.名称:组策略对象编辑器",这是怎么回事呢?现在笔者就为大家带来解决步骤,具体如下. 1.原因分析:出现此问题可能是由于用户对我的电脑中的环境变量进行修改引起的,或者是电脑中环

常见ASP.NET高试出错信息及解决办法

asp.net|解决 1 错误信息: 请求因 HTTP 状态 401 失败:Access Denied  解决: 在iis信息服务器上把匿名访问和允许iis控制密码给勾上 2 以下代码段出错的提示是:异常详细信息: System.ArgumentException: DataTable 已属于另一个 数据集     DataTable dtSubReqInfo = new DataTable();   dtSubReqInfo = (DataTable)Session[this.strSubRe

2010-10-19 10:48 Activex调试以及m_hWnd为空 解决办法

1. 点击[开始]->[运行] 命令:regedit.2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Microsoft -> Internet Explorer -> Main3. 在[右边区域][右键]新建一个名称为TabProcGrowth的DWORD值, 数值数据设置为0. VS不用重启,直接可以按F5进行调试ActiveX了! 参看: http://social.microsoft.com/Forums/en-US/vsdebug/th

asp.net中用sqlclient访问数据库出错解决办法

asp.net|client|访问|解决|数据|数据库 asp.net中用sqlclient访问数据库出错错误现象:login failed for user:pole\aspnet解决办法:在命令行运行如下命令osql -E -S (local)\NetSDK -Q "sp_grantlogin 'POLE\ASPNET'" osql -E -S (local)\NetSDK -d Pubs -Q "sp_grantdbaccess 'POLE\ASPNET'"o

遭遇Asp.Net长文件名下载的问题和解决办法

在Asp.Net中写了一个附件上传和下载的程序,附件上传到数据库中,然后将附件的GUID保存起来,我们可以根据GUID来找到数据库中的附件,一般附件下载的代码是: private void Download(string ID)     {         file = logic.GetAttachmentByID(new Guid(ID));         Response.AddHeader("Content-Type", file.Type);         Respons

asp.net ajax下导出excel的解决办法

c#代码: protected void page_load(object sender, eventargs e) {         postbacktrigger trigger = new postbacktrigger();         trigger.controlid = "btn_export";         ((updatepanel)page.controls[0].findcontrol("updatepanel1")).trigger