Vbscript 以管理员身份执行脚本时未找到文件
我有这个脚本,启动一个HTA,它需要以管理员权限启动Vbscript 以管理员身份执行脚本时未找到文件,vbscript,permissions,admin,hta,Vbscript,Permissions,Admin,Hta,我有这个脚本,启动一个HTA,它需要以管理员权限启动 Set objShell = CreateObject("Wscript.Shell") isLocal = MsgBox("Launch app for a local configuration ?", vbYesNo + vbQuestion, "Settings") If isLocal = vbYes Then objShell.Run "src\Configurator.hta" Else 'This code
Set objShell = CreateObject("Wscript.Shell")
isLocal = MsgBox("Launch app for a local configuration ?", vbYesNo + vbQuestion, "Settings")
If isLocal = vbYes Then
objShell.Run "src\Configurator.hta"
Else
'This code doesn't matter here
End If
该脚本在正常启动时运行良好,但当我以管理员身份(通过上下文菜单)执行VBS时,我得到一个objShell.Run“src\Configurator.hta”行的文件未找到错误
当我添加以下代码时,它为两种执行方法提供了相同的结果(提供了执行脚本的目录)
非常感谢您对此问题的任何帮助或解释。您可以查看以下内容:
HTA助推器
如果HTAElevate()=True,则
CreateObject(“WScript.Shell”)。运行“mmc.exe compmgmt.msc”,True
调用Main()
如果结束
副标题()
MsgBox“HTA Ende”,4096
端接头
“***v13.3***www.dieseyer.de******************************************
函数HTAElevate()
'***********************************************************
“Unter Windows x64 laufen VBS”在x64 Umgebung的双通道中
'mit%WinDi%\System32\wscript.exe或mit%WinDi%\System32\cscript.exe。
“在x64乌姆盖邦-劳芬VBS阿伯尼希特(richtig)。Prozedur模具
他死了,然后开始了。das VBS在der中的应用
常量Elev=“/highted”
'MsgBox oHTA.commandLine,“5016::”
'Trace32Log“5018::oHTA.commandLine:==”&oHTA.commandLine&“==”,1
HTAElevate=True
'如果InStr(LCase(oHTA.commandLine),Elev)>0,那么MsgBox oHTA.commandLine,“5022:”
如果InStr(LCase(oHTA.commandLine),Elev)>0,则退出函数
出错时继续下一步
window.resizeto 750,10':window.moveto screen.width/2,screen.height/2
错误转到0
'MsgBox oHTA.commandLine,“5030:”
createobject(“Shell.Application”).ShellExecute“mshta.exe”、oHTA.commandLine&Elev、“,”runas“,1
HTAElevate=False
自我封闭
结束函数“HTAElevate()
您可以查看以下内容:
HTA助推器
如果HTAElevate()=True,则
CreateObject(“WScript.Shell”)。运行“mmc.exe compmgmt.msc”,True
调用Main()
如果结束
副标题()
MsgBox“HTA Ende”,4096
端接头
“***v13.3***www.dieseyer.de******************************************
函数HTAElevate()
'***********************************************************
“Unter Windows x64 laufen VBS”在x64 Umgebung的双通道中
'mit%WinDi%\System32\wscript.exe或mit%WinDi%\System32\cscript.exe。
“在x64乌姆盖邦-劳芬VBS阿伯尼希特(richtig)。Prozedur模具
他死了,然后开始了。das VBS在der中的应用
常量Elev=“/highted”
'MsgBox oHTA.commandLine,“5016::”
'Trace32Log“5018::oHTA.commandLine:==”&oHTA.commandLine&“==”,1
HTAElevate=True
'如果InStr(LCase(oHTA.commandLine),Elev)>0,那么MsgBox oHTA.commandLine,“5022:”
如果InStr(LCase(oHTA.commandLine),Elev)>0,则退出函数
出错时继续下一步
window.resizeto 750,10':window.moveto screen.width/2,screen.height/2
错误转到0
'MsgBox oHTA.commandLine,“5030:”
createobject(“Shell.Application”).ShellExecute“mshta.exe”、oHTA.commandLine&Elev、“,”runas“,1
HTAElevate=False
自我封闭
结束函数“HTAElevate()
我怀疑这是一个工作目录问题。以管理员身份打开cmd,导航到脚本位置并执行它。或者最终,使用objShell.Run scriptdir&“\src\Configurator.hta”
这两种解决方案都可以工作,但我的hta没有管理员权限。在我的HTA中,我有一个检查管理员权限的sub,它说没有,我需要管理员权限的方法也不起作用。我怀疑这是一个工作目录问题。以管理员身份打开cmd,导航到脚本位置并执行它。或者最终,使用objShell.Run scriptdir&“\src\Configurator.hta”
这两种解决方案都可以工作,但我的hta没有管理员权限。在我的HTA中,我有一个检查管理员权限的sub,它说没有,我需要管理员权限的方法也不起作用。谢谢,我使用了你的和Cid的答案来解决我的问题。我现在使用以下行执行我的HTA:createobject(“Shell.Application”).ShellExecute“mshta.exe”、scriptDir&HTAPath&Elev&strParams、“,”runas“,1
。我还使用strParams将scriptDir作为参数发送,以重新定义默认打开为C:\Windows\System32的HTA工作目录。谢谢,我使用了您的和Cid应答解决了我的问题。我现在使用以下行执行我的HTA:createobject(“Shell.Application”).ShellExecute“mshta.exe”、scriptDir&HTAPath&Elev&strParams、“,”runas“,1
。我还使用strParams将scriptDir作为参数发送,以重新定义HTA工作目录,该目录在默认情况下以C:\Windows\System32打开。
scriptdir = CreateObject("Scripting.FileSystemObject").GetParentFolderName(WScript.ScriptFullName)
MsgBox scriptdir
<html>
<head>
<title>HTA Helpomatic</title>
<HTA:APPLICATION
ID="oHTA"
APPLICATIONNAME="HTAHelpomatic"
SCROLL="yes"
SINGLEINSTANCE="yes"
>
<!-- ID="objHTAHelpomatic" -->
<!-- WINDOWSTATE="maximize" -->
</head>
<SCRIPT Language="VBScript">
If HTAElevate() = True Then
CreateObject("WScript.Shell").Run "mmc.exe compmgmt.msc", , True
Call Main()
End If
Sub Main()
MsgBox "HTA-Ende", 4096
End Sub
'*** v13.3 *** www.dieseyer.de *****************************
Function HTAElevate()
'***********************************************************
' Unter Windows x64 laufen VBS' nach einem Doppelklick in der x64-Umgebung
' mit %WinDi%\System32\wscript.exe oder mit %WinDi%\System32\cscript.exe.
' In der x64-Umgebung laufen VBS aber nicht (richtig). Die Prozedur
' HTAElevate() erkennt dies und startet ggf. das VBS in der
Const Elev = " /elevated"
' MsgBox oHTA.commandLine, , "5016 :: "
' Trace32Log "5018 :: oHTA.commandLine: ==" & oHTA.commandLine & "==", 1
HTAElevate = True
' If InStr( LCase( oHTA.commandLine ), Elev) > 0 then MsgBox oHTA.commandLine, , "5022 :: "
If InStr( LCase( oHTA.commandLine ), Elev) > 0 then Exit Function
On Error Resume Next
window.resizeto 750, 10 ' : window.moveto screen.width / 2, screen.height / 2
On Error GoTo 0
' MsgBox oHTA.commandLine, , "5030 :: "
createobject("Shell.Application").ShellExecute "mshta.exe", oHTA.commandLine & Elev, "", "runas", 1
HTAElevate = False
self.close
End Function ' HTAElevate()
</SCRIPT>
<body>
</body>
</html>