透過作為服務運行的 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

相關內容