एक सेवा के रूप में चल रहे VBScript के माध्यम से ज़िप फ़ाइल को निकालना


2

विवरण

  • ओएस: विंडोज 7
  • यूएसी: अक्षम
  • क्या: मैं एक VBScript चला रहा हूं जो ज़िप फ़ाइल को निकालती है, और जेनस्क्रिप्ट सेवा द्वारा vbscript को बंद कर दिया जाता है। मुझे वीबीएसस्क्रिप्ट का उपयोग करने की आवश्यकता है, और मैं बाहरी उपकरणों का उपयोग नहीं कर सकता हूं जो एक साफ विंडोज़ इंस्टॉलेशन में मौजूद नहीं हैं।
  • समस्या: यदि सेवा NT प्राधिकरण \ SYSTEM या एक स्थानीय व्यवस्थापक के रूप में चल रही है, तो मुझे स्क्रीन पर त्रुटि संदेश संबंधित स्क्रिप्टिंग unzipping से मिलता है। वर्तमान उपयोगकर्ता के रूप में स्क्रिप्ट को चलाने से कोई समस्या नहीं होती है। त्रुटि संदेश का शीर्षक है: इंटरएक्टिव सर्विसेज डिटेक्शन। संवाद पाठ कहता है कि इस कंप्यूटर पर चलने वाला एक कार्यक्रम एक संदेश प्रदर्शित करने की कोशिश कर रहा हैपहला डायलॉग जो दिखता है

यदि आप "संदेश देखें" पर क्लिक करते हैं, तो आपको एक बहुत पुराना दिखने वाला संवाद मिलेगा जिसका शीर्षक है: पाठ के साथ फ़ोल्डर पहुँच अस्वीकृत इस फ़ोल्डर की प्रतिलिपि बनाने के लिए आपको व्यवस्थापक की अनुमति प्रदान करनी होगीदूसरा डायलॉग जो दिखता है

ऐसा लगता है कि यह किसी भी तरह से यूएसी से संबंधित है, यूएसी को छोड़कर माना जाता है।

  • स्क्रिप्ट:


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


आपके पास कुछ WScript.Echo है, जिसमें पॉप-अप विंडो प्रदर्शित करने की कोशिश की जाएगी।
रिचर्ड

मुझे लगता है मुझे जोड़ा जाना चाहिए: यह w / cscript चलाया जा रहा है, इसलिए सभी आउटपुट को कमांड विंडो में डाला जाता है, न कि पॉपअप के रूप में।
एनजीएडीए

क्या आपने टिप्पणी करने की कोशिश की WScript.Echoऔर printMsg(जो ऐसा प्रतीत नहीं होता है कि Subत्रुटि के साथ विफल हो जाएगा अगर यह कहा जाता है) और फिर इसके साथ चल रहा है wscript? यह दिखने वाली एक कमांड विंडो को रोक देगा - जो हो सकता है कि उस पॉप-अप को ट्रिगर कर रहा हो।
रिचर्ड

हाँ। मैं प्रिंटमेग रूटीन को शामिल करना भूल गया, जो इस उदाहरण के लिए एक WScript.Echo है।
NGaida

@ रिचर्ड हालांकि इस मुद्दे को पैदा नहीं कर रहा है; त्रुटि स्पष्ट रूप से दिखाती है कि यह objTarget.CopyHereकॉल के साथ अनुमतियों की समस्या है ।
एनजीएडीए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.