Das nachfolgende Stapelhybrid-Skript zielt darauf ab, Administratorrechte automatisch aufzurufen, bevor bestimmte Aufgaben ausgeführt werden, für die erhöhte Rechte erforderlich sind. Es öffnet die UAC-Eingabeaufforderung, aber unabhängig von der Benutzerauswahl werden keine Administratorrechte gewährt.Kann die ShellExecute-Funktion von Can Window WSF-Skriptargumente akzeptieren?
Ich frage mich, ob ShellExecute Funktion darin verwendeten die Fenster können WSF Argumente oder andere dehnbare Parameter akzeptieren? In diesem Fall ist es der Batch-Dateiname. Wenn es möglich ist, wie sollte das Skript dafür geändert werden, ohne eine andere Methode zu verwenden?
<!-- : Begin batch script
@echo off
setlocal EnableExtensions EnableDelayedExpansion
CD /D "%~dp0" & echo "%*"
set "dir=%temp%\Unzip"
set "file=%USERPROFILE%\Downloads\archive.zip"
if not "%1"=="ADR" (call :GetAdminRights
if defined adm cscript //nologo "%~f0?.wsf" //job:ADM "%~nx0")
>nul 2>&1 net file && (echo/ & echo "!errorlevel!") ||^
(echo/ & echo "!errorlevel!" & goto :end)
:: add your code here
echo Performing admin tasks
echo Hello >C:\test.txt
:end
timeout 5
exit /b
:GetAdminRights
REM Check for permissions
>nul 2>&1 net file
REM If error flag set, user don't have admin permissions
if '!errorlevel!' NEQ '0' (echo Requesting administrative privileges...
set "adm=0"
echo/ & echo "!errorlevel!" "%~nx0" "%~dp0" & echo/)
exit /b
----- Begin wsf script --->
<package>
<job id="ADM"><script language="VBScript">
Set UAC = CreateObject("Shell.Application")
WScript.Echo wscript.Arguments(0)
UAC.ShellExecute "cmd.exe", "/c ""wscript.Arguments(0)"" ADR", "", "runas", 1
</script></job>
</package>
:: Error in UAC Prompt (shown in details. Can't expand batch name correctly.)
Program location: "C:\Windows\System32\cmd.exe /c "wscript.Arguments(0)" ADR
Warum benötigt Ihr Skript Administratorrechte? –
@Bill_Stewart Ich habe die Frage bearbeitet, um ein Beispiel für eine solche Anforderung zu geben. Ich bin jedoch mehr daran interessiert, ShellExecute-Einschränkungen zu lernen, als "irgendeinen" möglichen Weg zu finden, um die Aufgabe zu erfüllen. :) – sambul35
Ich sehe nicht, wo Sie sagen, warum Sie Administratorrechte benötigen. Sie sagen nur "vor dem Ausführen einiger Benutzeraufgaben". Welche Aufgaben? (Benutzeraufgaben sollten keine Administratorrechte erfordern.) –