通过作为服务运行的 VBScript 提取 zip 文件

通过作为服务运行的 VBScript 提取 zip 文件

细节

  • 操作系统: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

相关内容