
詳細
- OS: Windows 7
- UAC: 無効
- 内容: zip ファイルを抽出する VBScript を実行していますが、VBScript は Jenkins サービスによって開始されます。VBScript を使用する必要があり、クリーンな Windows インストールに存在しない外部ツールは使用できません。
- 問題: サービスが NT Authority\SYSTEM またはローカル管理者として実行されている場合、vbscript の解凍に関連するエラー メッセージが画面に表示されます。スクリプトを現在のユーザーとして実行すると、まったく問題は発生しません。エラー メッセージのタイトルは「対話型サービス検出」です。ダイアログ テキストには次のように表示されます。このコンピュータで実行されているプログラムがメッセージを表示しようとしています。
「メッセージを表示」をクリックすると、次のようなタイトルの非常に古いダイアログが表示されます。フォルダへのアクセスが拒否されましたテキスト付きこのフォルダをコピーするには管理者権限が必要です。
UAC が無効になっていることを除けば、何らかの形で UAC に関連しているようです。
- 脚本:
Const noProgressYesAll = &H14
Dim objFSO
Set objFSO = CreateObject("scripting.filesystemobject")
zipFile = "C:\test.zip"
unzipPath = "C:\test\"
WScript.Echo "ZIPEXTRACTDIR: " & unzipPath
WScript.Echo "ZIPFILE: " & zipFile
If objFSO.FileExists(zipFile) Then
If objFSO.FolderExists(unzipPath) Then
Set objShell = CreateObject( "Shell.Application" )
Set objSource = objShell.NameSpace(zipFile)
If objSource is Nothing Then
printMsg "Invalid Zip File " & zipFile
Else
unzipLog = zipFile&".log"
printMsg "Logging to " & unzipLog
Set objLog = objFSO.OpenTextFile(unzipLog,fsoForWriting,True)
Set objTarget = objShell.NameSpace(unzipPath)
objTarget.CopyHere objSource.Items, noProgressYesAll
For Each item in objSource.Items
printMsg "Extracted: " & unzipPath&item.Name
objLog.Write unzipPath&item.Name & vbCrLf
If objFSO.FileExists(unzipPath&item.Name) Then
printMsg "Verified File: " & unzipPath&item.Name
Else
If objFSO.FolderExists(unzipPath&item.Name) Then
printMsg "Verified Folder: " & unzipPath&item.Name
End If
End If
Next
objLog.Close
End If
Else
printMsg "Directory does not exist: " & unzipPath
End If
Else
printMsg "Zip file does not exist: " & zipFile
End If
Set objLog = Nothing
Set objSource = Nothing
set objShell = Nothing
set objTarget = Nothing