システムのドライブの1つにあるすべてのディレクトリ(フォルダ)を、空であるかどうか、またはExcelファイルに含めずにリストするvbscriptを作成しています。私はドライブのフォルダの場所を渡すとうまくいくが、ドライブの場所全体を渡すと「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 Volume Information'にアクセスするには、[SYSTEM](https://msdn.microsoft.com/en-us/library/windows/desktop/ms684190(v = vs.85).aspx)にする必要があります。それらをスキップする簡単かつ迅速な方法は、 'On Error Resume Next'です。アクセスを許可するということは、所有権を取得することを意味します...そうしたくはありません。 – Clijsters