สรุป
เมื่อคุณพยายามที่จะเรียกสคริปต์ของ Visual Basic จากเว็บเซิร์ฟเวอร์ในบริบทของสคริปต์ CGI สคริปต์อาจล้มเหลวอย่างถูกต้อง เหตุผลสำหรับการนี้น่าจะให้เอ็นจินการเขียนสคริปต์ที่โดยทั่วไปจะดำเนินการในบริบทความปลอดภัยของ IUSR_Machine สร้างขึ้น โดย IIS เมื่อมีการติดตั้ง แต่ Cscript.exe (โปรแกรมเขียนสคริปต์) ต้องมีอยู่ของรายการรีจิสทรีบางอย่างสำหรับผู้ใช้ IUSR_Machine เนื่องจากมีการโหลดไฮฟ์ HKEY_CURRENT_USER ไม่พร้อมใช้งานสำหรับการ IUSR_Machine, IIS จะโหลด HKEY_USERS\ การโหลดไฮฟ์เริ่มต้นแทน อย่างไรก็ตาม HKEY_USERS\ การโหลดไฮฟ์เริ่มต้นไม่ประกอบด้วยคีย์ที่จำเป็นและรายการสำหรับโปรแกรมเขียนสคริปต์ ในกรณีเหล่านี้ มีข้อผิดพลาด CGI จะเกิดขึ้น ไม่ มีข้อมูลเพิ่มเติม หรือถ้า Cscript.exe แฟ้มถูกเปิดในโหมดชุดงาน ข้อผิดพลาดจะปรากฏอักขระที่ไม่สามารถโหลดการตั้งค่าสำหรับผู้ใช้ที่ระบุ เอกสารนี้จะแสดงวิธีการตั้งค่าคอนฟิก IIS เครื่องจักรเมื่อต้องการอนุญาตให้สคริปต์ของ Visual Basic ที่จะดำเนินการเป็นสคริปต์ CGI
ข้อมูลเพิ่มเติม
บทความนี้อนุมานว่า โฮสต์สคริปต์ของ Windows ที่ติดตั้งอยู่บนเครื่องเซิร์ฟเวอร์ IIS ตัวเลือกการติดตั้งเริ่มต้นของชุดตัวเลือกของ NT จะทำเช่นนี้ ใช้ขั้นตอนต่อไปนี้เพื่อเปิดใช้งานการสนับสนุน VBScript:
-
เปิดพร้อมท์คำสั่ง เมื่อต้องการทำเช่นนี้ ให้ทำตามขั้นตอนเหล่านี้
-
คลิก เริ่ม แล้วคลิก เรียกใช้
-
พิมพ์cmdและจากนั้น คลิกตกลง
-
-
ค้นหาโฟลเดอร์ Inetpub\AdminScripts (ตำแหน่งที่ตั้งนี้อาจแตกต่างกันไปขึ้นอยู่กับการติดตั้งของ Internet Information Server)
-
พิมพ์คำสั่งต่อไปนี้:
adsutil.vbs cscript จะตั้ง w3svc/CreateCGIWithNewConsole "1"
adsutil.vbs cscript จะตั้ง w3svc/CreateProcessAsUser "0"
-
กำหนดค่านามสกุล.vbs การ Cscript.exe ที่อยู่ในไดเรกทอรี %SYSTEMROOT%\System32 แม็ป ทำเช่นนี้โดยใช้คอนโซลการจัดการของ Microsoft โดยเฉพาะอย่างยิ่ง ขั้นตอนการตั้งค่าคอนฟิกสำหรับ IIS4 จะเป็นดังนี้:
-
เรียกใช้แอพลิเคชัน IIS4คอนโซลการจัดการ
-
แก้ไขคุณสมบัติสำหรับเว็บไซต์ของคุณ (คลิกขวาบนเว็บไซต์ของคุณในการแสดงแผนภูมิและเลือกคุณสมบัติ)
-
เลือกแท็บไดเรกทอรีหน้าแรก
-
ในกล่องการตั้งค่าของแอพลิเคชันเลือกการตั้งค่าคอนฟิก
-
บนแท็บการแม็ป Appเลือกเพิ่ม
-
สามารถดำเนินการได้จะเป็นเครื่องจักร WinNT 4.0 (ทำให้แน่ใจว่าได้ใช้เส้นทางที่ถูกต้องเพื่อ Cscript.exe บนการติดตั้ง WinNT) ต่อไปนี้:
C:\WINNT\system32\CSCRIPT.EXE.exe %s %s
ป้อน.vbsสำหรับส่วนขยาย
-
ตรวจสอบให้แน่ใจว่า มีเลือกกล่องกาเครื่องหมายเอนจินของสคริปต์และตรวจสอบว่าแฟ้มมีอยู่
-
บันทึกแฟ้ม ด้วยการคลิกตกลงนำการตกลงและตกลงอีกครั้ง
-
-
โดยใช้ตัวแก้ไขรีจิสทรี สร้างคีย์และรายการต่อไปนี้:
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows Script HostHKEY_USERS\.DEFAULT\Software\Microsoft\Windows Script Host\Settings
ตรวจสอบว่า ทุกคนมีสิทธิการอ่านคีย์เหล่านี้สองครั้ง สร้างรายการต่อไปนี้ภายใต้ในขณะนี้:
HKEY_USERS\.DEFAULT\Software\Microsoft\Windows Script Host\SettingsBatchMode: REG_DWORD: 0DisplayLogo: REG_DWORD: 0Timeout: REG_DWORD: 0
-
การคัดลอกแฟ้มสคริปต์.vbs กับไดเรกทอรีเสมือนบนเซิร์ฟเวอร์ซึ่งมีสิทธิ์ดำเนินการ/สคริปต์เดี๋ยวนี้ โดยค่าเริ่มต้น ไดเรกทอรี /scripts จะมีสิทธิ์ที่จำเป็น
คุณควรจะสามารถทดสอบ ว่าการตั้งค่าคอนฟิกที่ทำงาน หรือไม่ โดยการสร้างสคริปต์ต่อไปนี้:
Option ExplicitWScript.Echo "Content-Type: text/html"WScript.EchoWScript.Echo "If you see this, it worked."
บันทึกสคริปต์ข้างต้นในไดเรกทอรี /scripts เป็น Test.vbs ขณะนี้ เรียกใช้สคริปต์ใช้เบราว์เซอร์ใด ๆ กับ URL ต่อไปนี้:
http://server/scripts/test.vbs.
หมายเหตุ: ข้อจำกัดที่คล้ายกันถูกนำไปใช้กับสถานการณ์ทั้งหมดที่เปิดใช้สคริปต์ Cscript.exe จากบริบทความปลอดภัยของระบบภายในเครื่องหรือระบบภายในเครื่องผู้ใช้ปลอม การเปลี่ยนแปลงรีจิสทรีข้างต้นควรแก้ไขสถานการณ์เหล่านี้
อ้างอิง
อินเทอร์เน็ตของ Microsoft ข้อมูลเซิร์ฟเวอร์เอกสารประกอบออนไลน์