서비스로 실행되는 VBScript를 통해 zip 파일 추출

서비스로 실행되는 VBScript를 통해 zip 파일 추출

세부

  • 운영체제: 윈도우 7
  • UAC: 비활성화됨
  • 내용: zip 파일을 추출하는 VBScript를 실행 중인데 Jenkins 서비스에 의해 vbscript가 시작됩니다. VBScript를 사용해야 하는데, 윈도우 클린 설치에서는 존재하지 않는 외부 도구를 사용할 수 없습니다.
  • 문제: 서비스가 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

관련 정보