admin.vbs 以管理员身份运行程序的vbs命令

所属分类: 脚本专栏 / DOS/BAT 阅读数: 506
收藏 0 赞 0 分享

1、以管理员身份运行程序的命令admin.vbs,用来提升权限去运行一些cmd命令等

'以管理员身份运行程序的命令admin.vbs 
Set objWMIServices = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") 
Set objWbemObjectSet = objWMIServices.ExecQuery(_ 
"SELECT * FROM Win32_Process WHERE " &_ 
"ExecutablePath='" & Replace(WScript.FullName,"\","\\") & "' and " & _ 
"CommandLine LIKE '%" & WScript.ScriptName & "%'") 
for each objWbemObject in objWbemObjectSet 
cmdline = objWbemObject.CommandLine 
next 
if WScript.Arguments.Count then 
file = WScript.Arguments(0) 
if file="/?" then 
call ShowHelp() 
WScript.Quit 
end if 
Set RegEx = new RegExp 
RegEx.IgnoreCase = true 
RegEx.Global = true 
RegEx.Pattern = "\\|\/|\||\(|\)|\[|\]|\{|\}|\^|\$|\.|\*|\?|\+" 
temp1 = RegEx.Replace(WScript.ScriptName, "\$&") 
temp2 = RegEx.Replace(file, "\$&") 
RegEx.Global = false 
RegEx.Pattern = "^.*?" & temp1 & "[""\s]*" & temp2 & """?\s*" 
args = RegEx.Replace(cmdline, "") 
'WScript.Echo file, args 
else 
file = "cmd.exe" 
'args = "/k cd /d """ & CreateObject("WScript.Shell").CurrentDirectory & Chr(34) 
end if 
'核心代码 
Set sh = CreateObject("Shell.Application") 
call sh.ShellExecute( file, args, , "runas" ) 
function ShowHelp() 
dim HelpStr 
HelpStr = "以管理员身份运行程序。" & vbCrLf _ 
& vbCrLf _ 
& WScript.ScriptName & " [program] [parameters]..." & vbCrLf _ 
& vbCrLf _ 
& "program 要运行的程序" & vbCrLf _ 
& "parameters 传递给 program 的参数" & vbCrLf _ 
& vbCrLf 
WScript.Echo HelpStr 
end function 

建议放到%SystemRoot%\system32目录下,对喜欢玩cmd而且操作系统是win7的人有点用处。
偶尔用到某些命令(如reg.exe)需要管理员权限,直接在cmd中 admin reg add ... 即可。

2、如果是想用vbs以管理员权限运行自身需要如下命令

将其添加到文件开头

Set WshShell = WScript.CreateObject("WScript.Shell") 
If WScript.Arguments.Length = 0 Then 
  Set ObjShell = CreateObject("Shell.Application") 
  ObjShell.ShellExecute "wscript.exe" _ 
  , """" & WScript.ScriptFullName & """ RunAsAdministrator", , "runas", 1 
  WScript.Quit 
End if 

3、Windows 10 为VBS文件添加以管理员权限运行选项

单击“开始”按钮,在搜索输入框中输入“regedit”并回车运行打开注册表编辑器,依次单击转到
“HKEY_CLASSES_ROOT\VBSFile\Shel”项,单击“编辑”菜单,指向“新建”,选择“项”,新建一个名为“runas”的项,然后再重复新建项操作,在其下再建立一个“command”项,单击“command”项,在右侧窗口上双击修改“默认”值的数据,将其数据修改为:
C:\windows\system32\wScript.exe “%1” %*
再单击“编辑”菜单,指向“新建”,选择“字符串值”,新建一个名为“IsolatedCommand”的值并双击该值,将其数据也改为:
C:\windows\system32\wScript.exe “%1” %*
确认无误后,关闭注册表编辑器,当你在资源管理器上用鼠标右键单击VBS文件时,经常会发现多出了一个“以管理员身份运行”的选项,选择它即可让脚本以足够的权限运行。

4、VBS使用管理员权限启动BAT

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是无法传递参数的

5、自动以管理员身份运行批处理(bat)文件

在日常运维工作中,为方便对windows用户进行系统安装或配置等,使用Windows自带的批处理(bat文件)是一种最为简单快速的方法。

但是,批处理脚本不会默认已管理员身份运行,一般情况下,我会将脚本命名为"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

以上就是admin.vbs 以管理员身份运行程序的vbs命令的详细内容,更多关于管理员身份运行程序的资料请关注脚本之家其它相关文章!

更多精彩内容其他人还在看

DOS 命令字典

DOS 命令字典
收藏 0 赞 0 分享

用replace实现替换正在使用的文件

用replace实现替换正在使用的文件
收藏 0 赞 0 分享

黑客基础之DOS (最齐全)超强推荐

黑客基础之DOS (最齐全)超强推荐
收藏 0 赞 0 分享

bat运行时不弹出那个黑框框的完美解决方案

bat运行时不弹出那个黑框框的完美解决方案
收藏 0 赞 0 分享

收藏的比较完整的批处理教程第1/2页

收藏的比较完整的批处理教程
收藏 0 赞 0 分享

批处理版的SC

批处理版的SC
收藏 0 赞 0 分享

BAT文件语法和技巧(bat文件的编写及使用)

批处理文件是一个文本文件,这个文件的每一行都是一条DOS命令(大部分时候就好象我们在DOS提示符下执行的命令行一样),你可以使用DOS下的Edit或者Windows的记事本(notepad)等任何文本文件编辑工具创建和修改批处理文件
收藏 0 赞 0 分享

用 Net 命令使局域网文件批量同步更新

用 Net 命令使局域网文件批量同步更新
收藏 0 赞 0 分享

如何用DOS命令删除顽固文件夹啊

如何用DOS命令删除顽固文件夹啊
收藏 0 赞 0 分享

dos下删除文件夹和文件的方法

dos下删除文件夹和文件的方法
收藏 0 赞 0 分享
查看更多