运行脚本作为管理员传递参数

时间:2016-06-23 09:21:17

标签: batch-file command-line vbscript batch-processing

我正在尝试以管理员身份运行一个命令但我收到错误。以下是代码。

的VBScript:

MyPath ="C:\Destination"
Dim objShell
Set objShell = CreateObject("Shell.Application")  
objShell.ShellExecute "C:\batchScript.cmd " & MyPath &, "", "", "runas", 1

batchScript.cmd

echo %1
psfile %1 -c

3 个答案:

答案 0 :(得分:2)

这不是我的工作,但我发现这真是一个很好的代码和平:

@echo off
:: ------- Self-elevating.bat --------------------------------------
@whoami /groups | find "S-1-16-12288" > nul && goto :admin
set "ELEVATE_CMDLINE=cd /d "%~dp0" & call "%~f0" %*"
findstr "^:::" "%~sf0">temp.vbs
cscript //nologo temp.vbs & del temp.vbs & exit /b

::: Set objShell = CreateObject("Shell.Application")
::: Set objWshShell = WScript.CreateObject("WScript.Shell")
::: Set objWshProcessEnv = objWshShell.Environment("PROCESS")
::: strCommandLine = Trim(objWshProcessEnv("ELEVATE_CMDLINE"))
::: objShell.ShellExecute "cmd", "/c " & strCommandLine, "", "runas"
:admin -------------------------------------------------------------
@echo Running as elevated user.
@echo Script file : %~f0
@echo Arguments   : %*
@echo Working dir : %cd%

将它用作CMD的标题,它将完成其余的工作。

答案 1 :(得分:1)

疯狂猜测(因为您认为没有必要实际显示错误消息):您正在使用连接运算符(&)而没有实际连接的东西:

objShell.ShellExecute "C:\batchScript.cmd " & MyPath &, "", "", "runas", 1
'                                                    ^

并且您还将参数作为命令的一部分传递。

删除虚假连接运算符并将参数作为实际参数传递:

objShell.ShellExecute "C:\batchScript.cmd", MyPath, "", "runas", 1

此外,$args[0]不是批处理文件中的有效变量。

答案 2 :(得分:0)

要检查您是否是管理员,可以使用以下命令= fltmcopenfiles

这是我的方法:

@echo off
fltmc>nul && Goto :HAccess
Title NAccess
set S=%temp%\getadmin.vbs
echo Set UAC = CreateObject^("Shell.Application"^) > "%S%"
echo UAC.ShellExecute "%~fs0", "", "", "runas", 1 >> "%S%"
cscript //nologo "%S%"
del "%S%"
exit /b

:HAccess
Echo Access !!