2011-01-24 110 views
0

我遇到了趨勢防毒牆網絡版模式填充C:\驅動器(沒有其他驅動器可用來更改目錄)的問題,我得到權限被拒絕訪問「C:\ Program Files \趨勢科技\防毒牆網絡版\ PCCSRV \ WSS \模式「運行下面的腳本。由於我將這個腳本用於少數幾個網站,並且爲了讓我的同事很容易實現,所以我不想再添加各種權限。vbscript filesystemobject權限被拒絕

我試過改變: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 
+0

什麼是從註冊表項中返回的實際路徑值? – unrealtrip 2011-01-24 23:03:45

回答

0

這是一個任何人一些改變誰可能會發現它有用的工作腳本:

'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