Извлечение zip-файла с помощью VBScript, запущенного как служба

Извлечение zip-файла с помощью VBScript, запущенного как служба

Подробности

  • ОС: Windows 7
  • UAC: отключено
  • Что: Я запускаю VBScript, который извлекает zip-файл, и vbscript запускается службой Jenkins. Мне нужно использовать VBScript, и я не могу использовать внешние инструменты, которые не существуют в чистой установке Windows.
  • Проблема: Если служба запущена как NT Authority\SYSTEM ИЛИ как локальный администратор, я получаю сообщение об ошибке на экране, связанное с распаковкой vbscript. Запуск скрипта от имени текущего пользователя не приводит к каким-либо проблемам. Сообщение об ошибке называется: Interactive Services Detection. Текст диалога гласит:Программа, запущенная на этом компьютере, пытается отобразить сообщение.Первое диалоговое окно, которое появляется

Если вы нажмете «просмотреть сообщение», вы увидите очень старое диалоговое окно с заголовком:Доступ к папке запрещенс текстомДля копирования этой папки вам потребуется разрешение администратора..Второе диалоговое окно, которое появляется

Кажется, это как-то связано с 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

Связанный контент