繁体   English   中英

vbscript文件系统对象权限被拒绝

[英]vbscript filesystemobject permission denied

我在趋势科技防毒墙网络版病毒码填充C:\\驱动器(没有其他驱动器可用于更改目录)时遇到问题,并且访问“ C:\\ Program Files \\ Trend Micro \\ OfficeScan \\ PCCSRV \\”时遇到权限被拒绝的错误WSS \\ patterns”运行以下脚本。 由于我将在少数几个站点中使用此脚本,并且为了使其易于实现,所以我不想添加各种权限。

我尝试将: PatternLocation = (strValue & "WSS\\patterns\\")更改为PatternLocation = ("""" & strValue & "WSS\\patterns\\""") ,我得到了“找不到路径”。 是否有任何VBScript专家可以推荐一种模拟方法来克服被拒绝的权限?

' Variable to locate HLM.
const HKEY_LOCAL_MACHINE = &H80000002
Set fso = CreateObject("Scripting.FileSystemObject") 

' Checks if the operating system is x86 or x64
Set objShell = CreateObject("WScript.Shell")
osType = objShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")

' The dot refers to the computer this vbscript has been run on.
strComputer = "."

' Provides connection to the registry.
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")

' Checks the bit for the operating system
If osType = "x86" Then
    ' Checks registry for Trend folder path.
    strKeyPath = "SOFTWARE\TrendMicro\OfficeScan\Service\Information"
Elseif osType = "AMD64" Then
    strKeyPath = "SOFTWARE\Wow6432Node\TrendMicro\OfficeScan\service\Information"
End if

trValueName = "Local_Path"
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue

' If the registry path is empty it won't install the scheduled task and alert you.
If IsNull(strValue) Then
    msgbox("Trend Micro is not installed.")
else
    PatternLocation = (strValue  &  "WSS\patterns\") ' folder to start deleting (subfolders will also be cleaned) 
    OlderThanDate = DateAdd("d", -2, Date)  ''# 2 days (adjust as necessary)
    DeleteOldFiles PatternLocation, OlderThanDate 
end if

Function DeleteOldFiles(folderName, BeforeDate) 
    Dim folder, file, fileCollection, folderCollection, subFolder 

    Set folder = fso.GetFolder(folderName) 
    Set fileCollection = folder.Files 
    For Each file In fileCollection 
        If file.DateLastModified < BeforeDate Then 
            fso.DeleteFile(file.Path) 
            End If 
    Next 

    Set folderCollection = folder.SubFolders 
    For Each subFolder In folderCollection 
        DeleteOldFiles subFolder.Path, BeforeDate 
    Next 
End Function

这是工作脚本,对可能会发现有用的任何人进行了一些更改:

    'Variable to locate HLM.
const HKEY_LOCAL_MACHINE = &H80000002
Set fso = CreateObject("Scripting.FileSystemObject") 

'Checks if the operating system is x86 or x64
Set objShell = CreateObject("WScript.Shell")
osType = objShell.ExpandEnvironmentStrings("%PROCESSOR_ARCHITECTURE%")

'The dot refers to the computer this vbscript has been run on.
strComputer = "."

'Provides connection to the registry.
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_
strComputer & "\root\default:StdRegProv")

 'Checks the bit for the operating system
If osType = "x86" Then
                'Checks registry for Trend folder path.
                strKeyPath = "SOFTWARE\TrendMicro\OfficeScan\Service\Information"
Elseif osType = "AMD64" Then
                strKeyPath = "SOFTWARE\Wow6432Node\TrendMicro\OfficeScan\service\Information"
End if
                strValueName = "Local_Path"
                objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue



'If the registry path is empty it won't install the scheduled task and alert you.
If IsNull(strValue) Then
                msgbox("Trend Micro is not installed.")

else

                PatternLocation = (strValue  &  "WSS\patterns") ' folder to start deleting (subfolders will also be cleaned) 
                'msgbox(PatternLocation)        
end if


startFolder = PatternLocation
OlderThanDate = DateAdd("d", -1, Date) ' 1 days  
DeleteOldFiles startFolder, OlderThanDate  
DeleteEmptyFolders startFolder

Function DeleteOldFiles(folderName, BeforeDate)  
Dim folder, file, fileCollection, folderCollection, subFolder  
Set folder = fso.GetFolder(folderName)  
Set fileCollection = folder.Files  
For Each file In fileCollection     
If file.DateLastModified < BeforeDate Then          
fso.DeleteFile(file.Path)   
End If  
Next  
Set folderCollection = folder.SubFolders  
For Each subFolder In folderCollection      
DeleteOldFiles subFolder.Path, BeforeDate  
Next  
End Function   
Function DeleteEmptyFolders(foldername)  
For Each Folder In fso.GetFolder(foldername).SubFolders     
DeleteEmptyFolders(Folder.Path)     
If Folder.Files.Count = 0 and Folder.SubFolders.Count = 0 Then          
fso.DeleteFolder(Folder.Path)   
End If  
Next  
End Function

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM