下面是一段标准的ASP代码:
<%@ LANGUAGE=VBScript%>
<%
Response.Buffer = True
Response.Expires = 0
Response.CacheControl = "Private"
Set fs = Server.CreateObject("Scripting.FileSystemObject")
Set drv = fs.GetDrive(Left(Server.MapPath("."), 2))
[separator]Response.Write "SerialNumber is " & drv.SerialNumber & "
"
Response.Write "TotalSize is " & drv.TotalSize & "
"
Set drv = Nothing
Set fs = Nothing
%>
但在有些机器上运行时,会出现“磁盘未准备好”或者500内部服务器错误问题,一种原因是服务器上禁用了ASP的内置组件 FileSystemObject。当运行到这一行时出错,解决方法是允许使用该组件。还有一种现象是运行到Response.Write "SerialNumber is " & drv.SerialNumber & "
" 和 Response.Write "TotalSize is " & drv.TotalSize & "
" 时出错,即:不允许该ASP程序读取硬盘的序列号及分区的容量。本站在以前曾经就此问题发过一个帖子:http://202.100.116.12/hqt/hqtbbs300.asp?id=1753,然后那个说法只是猜测,事实上,真正的原因并不是那样的。
在网友 asong 的试验下,已经得出问题的症结所在了:
即:运行这个程序的硬盘,假设是 D:\hqt\hqtchat4.asp(红蜻蜓4.0客户资料采集程序),而D盘未给“IUSR_机器名”这个帐号读取权限时就会出错。
因为通过 HTTP 运行这个ASP程序时,是以“Internet 来宾帐号:IUSR_机器名”的身份运行,而这个帐号未允许访问D盘,当然会出现磁盘未准备好的出错提示了。
知道了问题所在,解决方法就很简单了:打开资源管理器或“我的电脑”,用鼠标右键点击“D:”→“属性”→“安全”→“添加”,将“IUSR_机器名”这个帐号添加上去,并至少给予“读取”权限即可。
那为什么全新安装的 Windows 2000 可以运行这个程序呢?因为系统刚安装好时,每个硬盘都赋予了“everyone”所有权限,当然“IUSR_机器名”也有访问权限了。
如果你在运行本站的客户资料采集程序时遇到这样错误,请马上用这个方法试试。



