ด้วยการแนะนำการควบคุมบัญชีผู้ใช้ (UAC) ใน Windows Vista คุณมักจะเปิด Command Prompt เพื่อเรียกใช้แบตช์ไฟล์และสคริปต์ที่ต้องการสิทธิ์ระดับผู้ดูแลระบบ แอปพลิเคชันสามารถใช้ไฟล์รายการ (โดยใช้ค่าสถานะ RequireAdministrator ) เพื่อเรียกใช้การยกระดับโดยอัตโนมัติ
สำหรับสคริปต์บทความนี้ให้เทคนิคเล็กน้อยที่คุณสามารถยกระดับโดยอัตโนมัติโดยใช้พารามิเตอร์“ Runas” ShellExecute
( ดูเพิ่มเติม วิธีการยกระดับไฟล์แบตช์โดยอัตโนมัติเพื่อเรียกใช้ในฐานะผู้ดูแลระบบสำหรับวิธีการยกระดับอัตโนมัติอื่น)
เรียกใช้ Vbscript แบบยกระดับ
ขอบคุณ Jim Barry ที่ให้ทิปฉันเกี่ยวกับการใช้อาร์กิวเมนต์ runas ในวิธี ShellExecute ของวัตถุ Shell.Application ด้วยการแนะนำของ Jim สคริปต์ต้นฉบับของฉันย่อตัวลงอย่างมาก ใช้หนึ่งในวิธีการเหล่านี้เพื่อเรียกใช้ VBScripts ที่ยกระดับ
วิธีที่ 1
นี่คือสคริปต์ตัวอย่างที่เรียกใช้ตัวเองอีกครั้งในฐานะผู้ดูแลระบบ (ยกระดับ) โดยใช้พารามิเตอร์ runas หากสคริปต์ไม่มีอาร์กิวเมนต์บรรทัดคำสั่งที่ส่งผ่าน เมื่อเรียกใช้สคริปต์อีกครั้งในฐานะผู้ดูแลระบบให้ส่งอาร์กิวเมนต์ที่เป็นการหลอกลวงเพื่อให้สคริปต์ไม่ทำงานในวงจรวนซ้ำ
ถ้า WScript.Arguments.length = 0 ให้ตั้งค่า objShell = CreateObject ("Shell.Application") 'ผ่านการโต้แย้งปลอมพูด [uac] objShell.ShellExecute "wscript.exe", Chr (34) & _ WScript.ScriptFullName & Chrr (34) & "uac", "", "runas", 1 อื่น ๆ 'เพิ่มรหัสของคุณที่นี่สิ้นสุดถ้า
วิธีที่ 2
วิธีนี้ใช้สคริปต์ตัวเรียกใช้งานซึ่งรัน VBScript หลักที่ยกระดับโดยใช้คำกริยา runas
Set objShell = CreateObject("Shell.Application") Set FSO = CreateObject("Scripting.FileSystemObject") strPath = FSO.GetParentFolderName (WScript.ScriptFullName) If FSO.FileExists(strPath & "\MAIN.VBS") Then objShell.ShellExecute "wscript.exe", _ Chr(34) & strPath & "\MAIN.VBS" & Chr(34), "", "runas", 1 Else MsgBox "Script file MAIN.VBS not found" End If
คุณจะเห็นกล่องโต้ตอบระดับความสูงของ UAC
เมื่อผู้ใช้คลิก ดำเนิน การ ต่อ เพื่ออนุมัติสคริปต์หลักจะเปิดตัวในฐานะผู้ดูแลระบบ
ที่เกี่ยวข้อง: วิธีการยกระดับไฟล์แบตช์โดยอัตโนมัติเพื่อเรียกใช้ในฐานะผู้ดูแลระบบ?