Windows 8 จะไม่ให้ฉันเรียกใช้ vbscript แม้ว่าฉันจะเป็นผู้ดูแลระบบก็ตาม


1

ฉันเขียน vbscript เล็กน้อยที่ดาวน์โหลดไฟล์จากเว็บเซิร์ฟเวอร์ ฉันเข้าใจว่าทำไมสิ่งนี้ถึงทำให้ระบบปฏิบัติการกังวล แต่ฉันเข้าสู่ระบบในฐานะผู้ดูแลระบบและฉันต้องการให้สคริปต์ทำงาน

ข้อผิดพลาดที่ฉันได้รับคือ

Error: Permission denied
Code:  800A0046

ฉันจะบอก Windows ให้ผู้ดูแลระบบทำในสิ่งที่เขาต้องการได้อย่างไร

แก้ไข

ฉันใส่สคริปต์ดาวน์โหลดด้านล่างเพื่อช่วย พยายามใน Windows XP ก่อนหน้านี้ก็ไม่มีปัญหา windows 8 ที่บ้านของฉันไม่ให้มัน

HTTPDownload "http://site.com/fileA.dll", "C:\"
HTTPDownload "http://site.com/fileB.exe", "C:\"

Sub HTTPDownload( myURL, myPath )
    Dim i, objFile, objFSO, objHTTP, strFile, strMsg
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Set objFSO = CreateObject( "Scripting.FileSystemObject" )
    If objFSO.FolderExists( myPath ) Then
        strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
    ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
        strFile = myPath
    Else
        Exit Sub
    End If
    Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )
    Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
    objHTTP.Open "GET", myURL, False
    objHTTP.Send
    For i = 1 To LenB( objHTTP.ResponseBody )
        objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
    Next
    objFile.Close( )
End Sub

2
โปรดหลีกเลี่ยงการดูหมิ่นหน้ากากที่ไม่เป็นที่พอใจ คุณสามารถโพสต์สคริปต์ได้หรือไม่แม้ว่าจะไม่ใช่เว็บไซต์การเขียนโปรแกรม แต่ก็ยากที่จะบอกเหตุผลที่ Winows ให้ข้อผิดพลาดเกี่ยวกับการอนุญาตโดยไม่ทราบว่าสคริปต์ทำอะไร
Ramhound

คุณกำลังพยายามทำไดเรกทอรีใดให้วางไฟล์ที่ดาวน์โหลดมา
Ramhound

@Ramhound ขอบคุณเดิมเป็น C: \ ลองใน dir อื่นและมันก็ดี ตลกที่ Windows 8 จะไม่ให้ฉันดาวน์โหลดบางสิ่งโดยตรงไปยัง C: \ แม้จะมีสิทธิ์ของผู้ดูแลระบบ
user2018084

1
Windows ทำงานคล้ายกับวิธีที่ Linux จัดการสิทธิ์ต่างๆ ผู้ใช้อาจมีสิทธิ์เข้าถึงแบบอ่าน / เขียนในบางสิ่ง แต่การกระทำบางอย่างอาจต้องมีการโต้ตอบกับผู้ใช้เพื่อดำเนินการ ตัวอย่างเช่นคุณสามารถมีสิทธิ์ในการทำบางสิ่งบางอย่างใน Linux แต่อาจยังต้องให้คุณเรียกใช้sudoคำสั่งเพื่อดำเนินการคำสั่ง ในกรณีของ Windows คุณจะต้องเพิ่มสิทธิ์ของกระบวนการ (ผู้ใช้จะต้องให้สิทธิ์เป็นพิเศษ) เพื่อประกาศสิทธิ์ของกระบวนการให้กับระดับสิทธิ์ของผู้ใช้ ไดเรกทอรี C ได้รับการป้องกันโดยค่าเริ่มต้น
Ramhound

คุณสามารถย้าย / ปรับเปลี่ยนสคริปต์เพื่อสร้างโฟลเดอร์และไฟล์ในไดเรกทอรีอื่นเพื่อแก้ไขปัญหาสิทธิ์เฉพาะหรือใช้ "เรียกใช้ในฐานะผู้ดูแลระบบ" ซึ่งจะประกาศสิทธิ์การใช้งานให้กับระดับสิทธิ์ของผู้ใช้ สิ่งนี้จะช่วยให้กระบวนการสามารถสร้างไฟล์ได้เองเหมือนกับที่คุณสามารถสร้างโดยใช้windows explorer(ซึ่งโดยค่าเริ่มต้นจะรันโดยได้รับอนุญาตเหมือนกับ theuser) อย่าเปรียบเทียบพฤติกรรม Windows XP กับ Windows XP ซึ่งเป็นพฤติกรรมหนึ่งตันเปลี่ยนไปจากการเปิดตัว Windows Vista และการแนะนำของ UAC (ดีกว่า)
Ramhound

คำตอบ:


-3

Windows 8 โดยค่าเริ่มต้นปิดการใช้งานการดำเนินการของสคริปต์ทั้งหมด มีการทำเพื่อไม่ให้สคริปต์ที่ไม่ต้องการทำงาน สามารถเปิดใช้งานอีกครั้งเพื่ออนุญาต

โดยให้ทำดังนี้:
01. เปิด Powershell ในโหมดผู้ดูแลระบบ
02.Type: Set-ExecutionPolicy -ExecutionPolicy ไม่ จำกัด

สิ่งนี้อนุญาตให้เรียกใช้งานสคริปต์ทั้งหมด

ในการรีเซ็ต:

Set-ExecutionPolicy -ExecutionPolicy ไม่ได้กำหนด

ข้อมูลเพิ่มเติม: มีทั้งหมด 6 นโยบาย:

  • จำกัด [ค่าเริ่มต้น]: อนุญาตคำสั่งเท่านั้น ไม่มีสคริปต์
  • AllSigned: อนุญาตสคริปต์ที่เชื่อถือได้ (มีลายเซ็น) ให้เรียกใช้
  • RemoteSigned: อนุญาตสคริปต์ท้องถิ่นที่ไม่ได้ลงชื่อ แต่สคริปต์ที่ลงนามจากแหล่งภายนอก
  • ไม่ จำกัด : อนุญาตให้สคริปต์ทั้งหมดทำงาน แต่มีคำเตือนให้ก่อนเรียกใช้สคริปต์ภายนอก
  • บายพาส: ไม่ จำกัด จำนวน
  • ไม่ได้กำหนด: ไม่ได้กำหนดขอบเขตปัจจุบัน
  • สำหรับข้อมูลเพิ่มเติมตรงไปที่: นโยบายการปฏิบัติ


    นี่ไม่ใช่เหตุผลที่สคริปต์ไม่ทำงาน นี่คือความชัดเจนตามตำแหน่งของสคริปต์เอง
    Ramhound

    ไม่ต้องพูดถึงว่าสคริปต์ที่กำลังเรียกใช้คือ VBScript และไม่ใช่ Powerhell ดังนั้นการรักษาความปลอดภัย PowerShell จึงไม่มีผลกระทบ
    EBGreen
    โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
    Licensed under cc by-sa 3.0 with attribution required.