使用VBScript和FileSystemObject以独占方式访问日志文件

使用VBScript和FileSystemObject以独占方式访问日志文件,vbscript,file-permissions,file-access,filesystemobject,Vbscript,File Permissions,File Access,Filesystemobject,我有一个VBS脚本,它当前正在写入日志文件。这个脚本可以从我的多个同时进程中启动,所以现在我担心并发性 我目前正在使用FileSystemObject打开并写入此文件。FSO支持独占文件访问吗?是的,FileSystemObject支持独占文件访问。如果调用OpenTextFile时另一个进程锁定了该文件,则会出现错误(权限被拒绝错误)。您应该能够捕获错误并进行适当的处理(在调用OpenTextFile后检查Err.Number 0是否是您可以这样做的一种方法)。我不知道Windows API对

我有一个VBS脚本,它当前正在写入日志文件。这个脚本可以从我的多个同时进程中启动,所以现在我担心并发性


我目前正在使用
FileSystemObject
打开并写入此文件。FSO支持独占文件访问吗?

是的,FileSystemObject支持独占文件访问。如果调用OpenTextFile时另一个进程锁定了该文件,则会出现错误(权限被拒绝错误)。您应该能够捕获错误并进行适当的处理(在调用OpenTextFile后检查Err.Number 0是否是您可以这样做的一种方法)。

我不知道Windows API对您的可访问性如何,但您应该看看Windows API中的调试基础设施

关于它有一篇很好的代码项目文章 基本上,使用OutputDebugString并使用DebugView捕获它,或者将其管道化到文件,将消除锁定日志文件的问题,也将消除多个脚本排队写入日志文件的瓶颈


希望这有帮助。

如果可能,我建议您在每次需要写入文件时关闭句柄并重新打开,以避免可能出现的独占文件访问问题。例:

set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "jfdskfdkls"
objFSO.Close
'something something
set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "gfdgfdgfd"
objFSO.Close
'something else
set objFile = objFSO.OpenTextFile("somefile.txt",8,True)
objFSO.WriteLine "ddsgfgdfsgdfs"
objFSO.Close