我使用Inno Setup的创建桌面快捷方式管理权限的HTA打开一个HTA文件保存在Program Files文件在Windows 7这个HTA文件调用需要运行外部exe文件作为管理员。Inno Setup的创建快捷方式与
所以,要做到这一点,我想自动创建一个运行为使用Inno Setup的管理快捷方式。这里的问题是,快捷方式指向HTA文件而不是exe。我该如何去做呢?
我使用Inno Setup的创建桌面快捷方式管理权限的HTA打开一个HTA文件保存在Program Files文件在Windows 7这个HTA文件调用需要运行外部exe文件作为管理员。Inno Setup的创建快捷方式与
所以,要做到这一点,我想自动创建一个运行为使用Inno Setup的管理快捷方式。这里的问题是,快捷方式指向HTA文件而不是exe。我该如何去做呢?
直接回答这个问题是要创建快捷方式与HTA的文件名作为参数mshta.exe。 mshta.exe的快捷方式可以标记为以管理员身份运行。
*“...可以标记为以管理员身份运行。”*我可以问你,怎么样? – TLama 2013-03-11 12:15:26
这可能取决于用于创建快捷方式的工具。我不知道Inno Setup工具是否具有此功能。另一种方法是使用外部脚本(例如elevate.js,这里提到:http://blogs.msdn.com/b/aaron_margosis/archive/2007/07/01/scripting-elevation-on-vista.aspx)或elevate32.exe/elevate64.exe(http://www.westmesatech.com/misctools.html)在启动可执行文件时激发UAC提示。 – 2013-03-11 14:27:22
“以管理员身份运行”将是可执行文件的属性,而不是快捷方式。将其标记为以管理员身份运行将会产生其他尝试使用它的副作用,提示升级。 – Deanna 2013-03-11 16:36:23
如果你的可执行文件需要管理员权限,那么你应该add an appropriate manifest to your executable,不要尝试和提升HTML应用程序。
这取决于您是否确实可以更改可执行文件的清单。如果不是的话,你需要升级mshta.exe。 – 2013-03-11 17:22:00
检查此示例:
<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>
什么是_HTA_? – jachguate 2013-03-10 01:52:31
HTA是HTML应用程序。它基本上是一个脚本。 http://en.wikipedia.org/wiki/HTML_Application – CookieMonster 2013-03-10 08:12:26
我相当确定文档的快捷方式(这是HTA可能包含的内容)无法以管理员身份运行。对于想要做任何管理的HTA,我会非常怀疑 - HTA通常只是打包的网页,不是吗? – Miral 2013-03-10 13:26:05