vbs ShellExecute运行外部程序时判断外部程序执行成功与否方法

简介: vbs ShellExecute运行外部程序时判断外部程序执行成功与否方法

这篇文章主要介绍了vbs ShellExecute运行外部程序时如何判断外部程序执行成功与否,需要的朋友可以参考下。


需要vbs执行一些命令,比如 ""uwfmgr filter enable"" (统一写入筛选器), 但是这个uwfmgr.exe需要管理员权限才能运行相关命令

目前我是这么写的:

Set sst = CreateObject("Shell.Application")

Call sst.ShellExecute("uwfmgr","filter enable", ,"runas",0)


这样可以以管理员身份运行命令, 但是我怎么才能判断uwfmgr执行是成功还是失败的? (管理员cmd运行命令会有返回值)

原来我执行一些cmd命令都是用:


intReturn = WScript.CreateObject("wscript.shell").Run("xxxxxx",1,true)


通过判断intReturn是否为0来判断命令执行成功失败, 但是这个不能执行需要管理员权限的命令, 有没有办法让Run能以管理员运行命令?


如何隐藏运行Setup.bat文件

'以管理员身份运行程序的命令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 = "Setup.bat"

'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
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/u014316335/article/details/138164779

到此这篇关于vbs ShellExecute运行外部程序时如何判断外部程序执行成功与否的文章就介绍到这了。

相关文章
|
10月前
‘you-get‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
‘you-get‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
246 0
|
10月前
|
开发者 Windows
'wepy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
'wepy' 不是内部或外部命令,也不是可运行的程序 或批处理文件。
113 0
|
安全 Windows
win11系统‘ipconfig‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
win11系统‘ipconfig‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
1543 0
win11系统‘ipconfig‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件
|
9月前
|
JavaScript
报错:‘nodemon‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
报错:‘nodemon‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。
|
资源调度
【已解决】‘export‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
‘export‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
2325 0
|
Shell C#
C#使用Process打开外部程序或外部文件的使用总结
执行一个外部的第三方应用的原理,和调用cmd执行命令是一样的,只不过可以添加程序的启动参数(`StartInfo.Arguments`)等。调用第三方应用,在其启动后,关于程序的操作、处理、是否...
1705 0
C#使用Process打开外部程序或外部文件的使用总结
如何利用Vbs 运行外部程序
如何利用Vbs 运行外部程序
212 0
|
IDE 开发工具 C语言
成功解决''g++' 不是内部或外部命令,也不是可运行的程序 或批处理文件
成功解决''g++' 不是内部或外部命令,也不是可运行的程序 或批处理文件