在我的代码段,当我的脚本的文件名,它给了我否认权限 上下面的行:

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
...

因此你摧毁了参考,但离开文本流开在内存从而锁定您的文件。

您则前进,试图重新打开该文件,而该文件已经是“开放”。这是一个小长篇大论,你已经有了一个参考你所创建的文件之后 - 这将是更容易只是直说写,而不是创造一个又一个前销毁掉参考

其他提示

什么它的价值...

我确信我有,因为这条线的权限错误:

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用户

balabaster是完全正确的。你要么需要重新打开它第二次书写,或者利用现有的打开的句柄之前关闭该文件。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top