VBScript文件存在一致失败

时间:2014-06-13 17:07:18

标签: asp.net iis vbscript file-exists

我们正在尝试为我们的应用程序读取一些日志文件,但FileExists在每种情况下都失败了。所以我用这个测试代码简化了问题:

Dim filespec, msg
filespec = Chr(34) & "C:\Windows\explorer.exe" & Chr(34) 
'filespec = "C:\Windows\explorer.exe" 
'filespec = Chr(34) & "C:" & Chr(34) 
'filespec = "C:"
'filespec = "default.asp"
 Set fso = CreateObject("Scripting.FileSystemObject")
 If (fso.FileExists(filespec)) Then
     msg = filespec & " exists."
 Else
  msg = filespec & " doesn't exist."
 End If
 Response.Write(msg)

正如您所看到的,我们尝试使用和不添加Chr(32)(这是双引号字符)进行测试。我们正在对文件C:\ Windows \ explorer.exe进行测试,文件C:\ Windows \ explorer.exe确实存在于托管asp文件和iis服务器的计算机上。我们甚至在检查C驱动器是否存在时都会失败。

此外,如果我们尝试查看default.asp文件是否存在并且该文件与filetest.asp文件位于同一目录中,它甚至会失败。

有谁知道我们的FileExists一直失败的原因?谢谢。

3 个答案:

答案 0 :(得分:0)

filespec = "C:\Windows\explorer.exe"

没有额外的引号就行了。要查找我们需要使用的文件夹

 fso.FolderExists

而不是FileExists。

这仍然没有在同一目录中找到default.asp文件。但是这个问题与我们的实际问题相去甚远,即查看另一个驱动器上的日志文件。这个问题离这个原始问题太远了,所以我将分别发布这个问题。

答案 1 :(得分:0)

您无需插入其他引号。删除你的报价将很好。

 Dim filespec, msg

 filespec = "C:\Windows\explorer.exe" 

 Set fso = CreateObject("Scripting.FileSystemObject")
 If (fso.FileExists(filespec)) Then
     msg = filespec & " exists."
 Else
     msg = filespec & " doesn't exist."
 End If

 Response.Write(msg)

过去,我只注意到在使用wshshell.run时需要插入其他引号,因为空格可能会被解释为文件名的附加参数。

答案 2 :(得分:0)

看来我们的问题根本不在VBScript中。该应用程序在iis中的ApplicationPool内运行。该应用程序池的Identity属性是动态创建的applicationPoolIdentity用户。这是没有权限的用户。基本上,应用程序作为用户运行,无法访问任何其他驱动器。因此,它无法在任何网络驱动器上找到任何文件。我们必须使用适当的权限创建其他标识,并设置我们的applicationPool标识以使用该自定义帐户。

我在此处找到了有关如何设置此身份帐户的说明:http://technet.microsoft.com/en-us/library/cc771170%28v=ws.10%29.aspx