我正在写一个vbscript,以列出我的系统其中一个驱动器上的所有目录(文件夹)以及它们是否为空或不包含在excel文件中。当我传递一个驱动器的文件夹位置时,它会成功,但是当我传入整个驱动器位置时,它会显示“permission denied!code-800A0046”。这是由于系统卷信息等一些隐藏文件夹的存在,这些文件夹需要访问权限。我想要跳过所有这些文件夹或找到访问这些文件夹的方法。我如何实现这一目标? 下面是我的脚本:如何跳过我的vbscript无权访问的文件夹?
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
第5行应该授予码提升的权限/特权,但似乎并没有帮助的。
你的第一个5个liness给你的脚本[管理员权限](https://msdn.microsoft.com/en-US/library/windows/desktop/ms717801(V = vs.85)的.aspx)。要访问“系统卷信息”,您需要[SYSTEM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms684190(v = vs.85).aspx)。一种简单而快速的方式来跳过它们是'On Error Resume Next'。授予访问权将意味着拥有所有权......您不想这样做。 – Clijsters