Vbscript 以管理员身份执行脚本时未找到文件

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

我有这个脚本,启动一个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 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>