विवरण
- ओएस: विंडोज 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
कॉल के साथ अनुमतियों की समस्या है ।