Ich schreibe ein VBScript, um alle Verzeichnisse (Ordner) auf einem der Laufwerke meines Systems aufzulisten, ob sie leer sind oder nicht in eine Excel-Datei. Dies geschieht erfolgreich, wenn ich einen Ordnerspeicherort eines Laufwerks übergebe, aber wenn ich den gesamten Laufwerksspeicherort übergebe, heißt es "permission denied! Code-800A0046". Dies liegt daran, dass einige versteckte Ordner wie System Volume Information usw. vorhanden sind, für die Berechtigungen benötigt werden. Ich möchte entweder alle diese Ordner überspringen oder einen Weg finden, auf solche Ordner zuzugreifen. Wie erreiche ich das? Unten ist mein Skript:Wie überspringe ich Ordner, auf die mein vbscript nicht zugreifen kann?
If Not WScript.Arguments.Named.Exists("elevate") Then
CreateObject("Shell.Application").ShellExecute WScript.FullName _
, WScript.ScriptFullName & " /elevate", "", "runas", 1
WScript.Quit
End If
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Add
objExcel.Visible = True
intRow = 1
Set FSO = CreateObject("Scripting.FileSystemObject")
For Each objFolder In FSO.GetFolder("C:\").SubFolders
if ((objFolder.Attributes = 0) OR (objFolder.Attributes AND 1)) then
ShowSubFolders objFolder
End If
Next
Sub ShowSubFolders(Folder)
For Each Subfolder in Folder.SubFolders
if ((Subfolder.Attributes = 0) OR (Subfolder.Attributes AND 1)) then
If Subfolder.Size = 0 Then
objExcel.Cells(intRow,1) = SubFolder.Path
objExcel.Cells(intRow,2) = "Empty"
intRow = intRow + 1
Else
objExcel.Cells(intRow,1) = SubFolder.Path
objExcel.Cells(intRow,2) = "Not Empty"
intRow = intRow + 1
End If
End If
Next
End Sub
Set FSO = nothing
Die ersten 5 Zeilen sollen den Code erhöhten Rechte/Privilegien gewähren, aber das scheint nicht zu helfen.
Ihre ersten 5 Liness Ihr Skript geben [Administratorrechte] (https://msdn.microsoft.com/en-US/library/windows/desktop/ms717801 (v = vs.85) .aspx). Um auf 'System Volume Information' zuzugreifen, müssen Sie [SYSTEM] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms684190 (v = vs.85) .aspx) sein. Eine einfache und schnelle Möglichkeit, sie zu überspringen, ist 'On Error Resume Next'. Zugang zu gewähren würde bedeuten Besitz zu übernehmen ... Du willst das nicht tun. – Clijsters