但是,批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名为"XXXXXX(请右键点击,用管理员身份运行!).bat",但总有些用户会忽略这条提示,直接运行,此时由于权限不敷,导致脚本运行失败。
我们可以利用一种变通的方法,让bat启动时,首先调用vbs脚本,通过vbs脚本,以管理员身份调用该bat的 runas 部门
我们的脚本可以写在runas 下,这样就点击该bat脚本,就可以已管理员身份运行了
示例代码如下
- @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脚本中以管理员权限执行下令
把写好的bat设置为开机启动后,但是默认不是以管理员身份运行,所以开机启动的时候就会导致有一些下令执行不了
首先:假如windows每次获取管理员权限的时候都会弹窗,那么首先就要把弹窗关闭
关闭方法是每次弹出提示的时候提示框有一个深色字体,提示可以修改弹出设置,点进去,设置为永不或者无弹窗
接下来,只必要在.bat脚本中添加一下代码 即可实现 以管理员身份运行
在bat脚本文件第一行加上下面下令:
::强制获取管理员运行权限- %1 mshta vbscript:CreateObject(“Shell.Application”).ShellExecute(“cmd.exe”,"/c %~s0 ::","",“runas”,1)(window.close)&&exit
复制代码
cmd/bat怎样自动哀求管理员权限而不必要右键管理员运行
先上完备代码:- @echo off
- >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
- 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
复制代码
原理如下:
访问一个必要授权的文件夹,如(%SYSTEMROOT%\system32\config\system)
假如被允许了,阐明显然有管理员权限
假如被拒绝了,就要申请权限了。
申请权限的方法是:
(看echo的代码)
创建一个运行器,运行相对目次(相对目次就是运行批处理的目次)里面的程序,以管理员权限。
然后自然就申请管理员了哇到此这篇关于vbs之自动以管理员身份运行批处理(bat)文件的文章就先容到这了,更多干系管理员身份运行批处理内容请搜刮草根技能分享以前的文章或继承欣赏下面的干系文章希望各人以后多多支持草根技能分享! |