0

我正在使用 Inno Setup 创建一个桌面快捷方式,用于打开保存在 Windows 7 上的 Program Files 中的HTA文件。此 HTA 文件调用需要以管理员身份运行的外部 exe 文件。

因此,为此,我想使用 Inno Setup 自动创建一个以管理员身份运行的快捷方式。这里的问题是快捷方式指向 HTA 文件而不是 exe。我该怎么做呢?

4

3 回答 3

0

检查这个样本:

<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()
'***********************************************************
' http://dieseyer.de/scr/elevate.hta
' 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>
于 2014-06-24T03:58:47.187 回答
-1

如果您的可执行文件需要管理员访问权限,那么您应该向您的可执行文件添加适当的清单,而不是尝试提升 HTML 应用程序。

于 2013-03-11T17:16:20.023 回答
-1

该问题的直接答案是使用 HTA 的文件名作为参数创建 mshta.exe 的快捷方式。mshta.exe 的快捷方式可以标记为以管理员身份运行。

于 2013-03-11T02:38:06.560 回答