Med introduktionen af User Account Control (UAC) i Windows Vista åbner du normalt en forhøjet kommandoprompt for at køre batchfiler og scripts, der har brug for administrative rettigheder. Programmer kan gøre brug af manifestfiler (ved hjælp af flaget RequireAdministrator ) til automatisk at køre forhøjet.
For scripts giver denne artikel dig nogle pæne små tricks, som du automatisk kan hæve vha. ShellExecute “runas” -parameteren.
( Se også Sådan løftes en batch-fil automatisk for at køre den som administrator? For en anden auto-elevation-metode).
Start et Vbscript forhøjet
Tak til Jim Barry for at have tipt mig om brugen af runas- argumentet i ShellExecute- metoden til Shell.Application-objektet. Ved hjælp af Jims forslag blev mit originale manuskript kondenseret til en hel del. Brug en af disse metoder til at køre VBScripts forhøjet.
Metode 1
Her er et eksempelskript, der genstarter sig selv som administrator (hævet) ved hjælp af runas- parameteren, hvis scriptet ikke er bestået kommandolinjeargumenter. Når du genstarter scriptet som administrator, skal du blot videregive et falskt argument, så scriptet ikke kører i en cyklisk loop.
Hvis WScript.Arguments.length = 0 Indstil derefter objShell = CreateObject ("Shell.Application") 'Giv et falskt argument, siger [uac] objShell.ShellExecute "wscript.exe", Chr (34) & _ WScript.ScriptFullName & Chr (34) & "uac", "", "runas", 1 Ellers 'Tilføj din kode her End If
Metode 2
Denne metode bruger et launcher-script, der kører det vigtigste VBScript hævet ved hjælp af runas- verbet.
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
Du kan se UAC-elevationsdialogen.
Når brugeren klikker på Fortsæt for at godkende, startes hovedscriptet som administrator.
RETTET: Hvordan løftes en batch-fil automatisk for at køre den som administrator?