Extrahieren einer ZIP-Datei über VBScript, das als Dienst ausgeführt wird

Extrahieren einer ZIP-Datei über VBScript, das als Dienst ausgeführt wird

Einzelheiten

  • Betriebssystem: Windows 7
  • UAC: Deaktiviert
  • Was: Ich führe ein VBScript aus, das eine ZIP-Datei extrahiert, und das VBScript wird vom Jenkins-Dienst gestartet. Ich muss das VBScript verwenden und kann keine externen Tools verwenden, die in einer sauberen Windows-Installation nicht vorhanden sind.
  • Problem: Wenn der Dienst als NT Authority\SYSTEM ODER als lokaler Administrator ausgeführt wird, erhalte ich auf dem Bildschirm eine Fehlermeldung bezüglich des Entpackens des VBScripts. Wenn ich das Skript als aktueller Benutzer ausführe, treten überhaupt keine Probleme auf. Die Fehlermeldung lautet: Erkennung interaktiver Dienste. Der Dialogtext lautetEin auf diesem Computer ausgeführtes Programm versucht, eine Meldung anzuzeigen.Erster Dialog, der erscheint

Wenn Sie auf „Nachricht anzeigen“ klicken, wird ein sehr alt aussehender Dialog mit dem Titel:Ordnerzugriff verweigertmit dem TextSie müssen Administratorrechte erteilen, um diesen Ordner zu kopieren.Zweiter Dialog, der erscheint

Es scheint, als ob es irgendwie mit UAC zusammenhängt, außer dass UAC angeblich deaktiviert ist.

  • Skript:


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

verwandte Informationen