自动以管理员身份运行批处理bat文件(vbs与bat两种方法) |
|
但是,批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名?XXXXXX(请右键点击,用管理员身份运行!).bat",但总有些用户会忽略这条提示,直接运行,此时由于权限不足,导致脚本运行失败?/p> 我们可以使用一种变通的方法,让bat启动时,首先调用vbs脚本,通过vbs脚本,以管理员身份调用该bat?runas 部分 我们的脚本可以写在runas 下,这样就点击该bat脚本,就可以已管理员身份运行?/p> 示例代码如下
@ECHO OFF
setlocal EnableDelayedExpansion
color 3e
title 添加服务配置
PUSHD %'DP0 & cd /d "%'dp0"
%1 %2
mshta vbscript:createobject("shell.application").shellexecute("%'s0","goto :runas","","runas",1)(window.close)&goto :eof
:runas
::填写自己的脚?
echo 执行完毕,任意键退?
pause >nul
exit
VBS使用管理员权限启动BAT2
Set objShell = CreateObject(“WScript.Shell?
strPath = Replace(WScript.ScriptFullName, 文件? “?
objShell.Run("runas /user:administrator " & strPath & “cmd.Bat?
WScript.Sleep 1000
objShell.SendKeys “password{ENTER}?
WScript.Sleep 1000
注意:runas是无法传递参数的 bat脚本中以管理员权限执行命?/strong> 把写好的bat设置为开机启动后,但是默认不是以管理员身份运行,所以开机启动的时候就会导致有一些命令执行不?/p> 首先:如果windows每次获取管理员权限的时候都会弹窗,那么首先就要把弹窗关?/p> 关闭方法是每次弹出提示的时候提示框有一个深色字体,提示可以修改弹出设置,点进去,设置为永不或者无弹窗 接下来,只需要在.bat脚本中添加一下代?即可实现 以管理员身份运行 在bat脚本文件第一行加上下面命令: ::强制获取管理员运行权?/p> %1 mshta vbscript:CreateObject(“Shell.Application?.ShellExecute(“cmd.exe?"/c %'s0 ::","",“runas?1)(window.close)&&exit cmd/bat如何自动请求管理员权限而不需要右键管理员运行 先上完整代码?/p>
@echo off
>nul 2>&1 "%SYSTEMROOT%system32cacls.exe" "%SYSTEMROOT%system32configsystem"
if '%errorlevel%' NEQ '0' (
echo 请求管理员权?..
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%getadmin.vbs"
echo UAC.ShellExecute "%'s0", "", "", "runas", 1 >> "%temp%getadmin.vbs"
"%temp%getadmin.vbs"
exit /B
:gotAdmin
原理如下?/strong> 访问一个需要授权的文件夹,如(%SYSTEMROOT%system32configsystem?/p> 如果被允许了,说明显然有管理员权?/p> 如果被拒绝了,就要申请权限了?/p> 申请权限的方法是?/p> (看echo的代码) 创建一个运行器,运行相对目录(相对目录就是运行批处理的目录)里面的程序,以管理员权限?/p> 然后自然就申请管理员了哇到此这篇关于vbs之自动以管理员身份运行批处理(bat)文件的文章就介绍到这?更多相关管理员身份运行批处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家?/p> |