Извлечение zip-файла через VBScript, работающий в качестве службы

Подробности

  • ОС: Windows 7
  • UAC: отключено
  • Что: я запускаю VBScript, который извлекает zip-файл, и 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

0 ответов

Другие вопросы по тегам