vbscript:fso.opentextfile权限被拒绝
在我的代码段中,当我编写文件名脚本时,它会给我一个被拒绝的权限 在以下行:vbscript:fso.opentextfile权限被拒绝,vbscript,file-permissions,Vbscript,File Permissions,在我的代码段中,当我编写文件名脚本时,它会给我一个被拒绝的权限 在以下行: Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, ForAppending, True) 这是剧本 'output log info Function OutputToLog (strToAdd) Dim strDirectory,strFile,strText, objFile,objFolder,objTextFile,o
Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, ForAppending, True)
这是剧本
'output log info
Function OutputToLog (strToAdd)
Dim strDirectory,strFile,strText, objFile,objFolder,objTextFile,objFSO
strDirectory = "c:\eNet"
strFile = "\weeklydel.bat"
'strText = "Book Another Holiday"
strText = strToAdd
' Create the File System Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Check that the strDirectory folder exists
If objFSO.FolderExists(strDirectory) Then
Set objFolder = objFSO.GetFolder(strDirectory)
Else
Set objFolder = objFSO.CreateFolder(strDirectory)
'WScript.Echo "Just created " & strDirectory
End If
If objFSO.FileExists(strDirectory & strFile) Then
Set objFolder = objFSO.GetFolder(strDirectory)
Else
Set objFile = objFSO.CreateTextFile(strDirectory & strFile)
'Wscript.Echo "Just created " & strDirectory & strFile
End If
set objFile = nothing
set objFolder = nothing
' OpenTextFile Method needs a Const value
' ForAppending = 8 ForReading = 1, ForWriting = 2
Const ForAppending = 2
Set objTextFile = objFSO.OpenTextFile(strDirectory & strFile, ForAppending, True)
' Writes strText every time you run this VBScript
objTextFile.WriteLine(strText)
objTextFile.Close
End Function
我已分配vbscript域管理员权限。有什么想法吗
提前感谢我认为这与文件权限本身无关。这与您使用以下方法创建文件有关:
Set objFile = objFSO.CreateTextFile(strDirectory & strFile)
创建文件…并携带对该文件的引用(objFile)
然后在销毁引用之前不关闭文件
...
'Missing objFile.Close here
Set objFile = nothing
Set objFolder = nothing
...
因此,您正在销毁引用,但将textstream留在内存中打开,从而锁定文件
然后,当文件已“打开”时,您将继续尝试重新打开该文件。这有点冗长,您在创建文件后已经获得了一个引用-直接写入该引用比在创建另一个引用之前销毁引用更容易。balabaster完全正确。您需要在重新打开文件进行第二次写入之前关闭该文件,或者使用现有的打开句柄。 我确信我有一个权限错误,因为这行:
Set LogFile = LogFSO.OpenTextFile(LogFileName, ForWriting, True)
因为这是“权限被拒绝”错误指向的行。但事实上,我的许可错误就在下面几行:
WshShell.AppActivate(ScreensToRemove(i))
WshShell.SendKeys ("~")
WScript.Sleep(1000)
没有带有这样标题的屏幕,因此SendKeys是没有权限的
当然,解决办法是:
If WshShell.AppActivate(ScreensToRemove(i)) = True Then
WshShell.SendKeys ("~")
WScript.Sleep(1000)
End if
希望这可能会有所帮助。此外,请确保您没有在Excel中打开该文件(我在.csv文件中遇到此问题)…在我的特殊情况下,该文件以前存在,我所要做的就是授予Everyone用户权限