如何创建从cmd-line启动具有管理员权限的应用程序的快捷方式?

时间:2013-04-18 12:37:56

标签: windows batch-file hyperlink cmd inno-setup

我有一个安装程序(Inno-Setup),可以将我的应用程序安装到用户定义的路径中。在安装例程结束时,我想创建一个以管理员权限启动应用程序的快捷方式。该解决方案适用于从winXP到Win7的所有win版本
我能做些什么来实现这个目标?

我知道它是possible with a batch script, that executes a nasty vb-script。缺点是cmd窗口弹出窗口,它只适用于win7我猜。

我还尝试使用命令mklink来创建超链接,但它不起作用,因为无法传递设置管理员权限的参数。

4 个答案:

答案 0 :(得分:13)

您可以添加一个注册表键,告诉Windows以管理员身份执行您的程序:

HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers下,只需添加值<Path to your exe>的密钥(REG_SZ)RUNASADMIN即可。启动exe时,系统将提示您输入admin-access。

通过这种方式,您可以像创建Inno-Setup一样创建可执行文件的常规快捷方式。

如果您想通过cmd或批处理文件执行此操作,可以使用以下命令:

reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "<Path to your exe>" /t REG_SZ /d RUNASADMIN

答案 1 :(得分:1)

“以管理员身份运行”是可执行文件的属性,而不是快捷方式。您应该添加使Windows提示提升的required manifest

要在Windows XP上执行此操作,您需要将runas动词与ShellExecute()一起用作其他用户,但这将删除访问本地配置文件的任何功能。当你的exe发现它没有以完全的管理员访问权限运行时,可以从你的exe中完成。

答案 2 :(得分:0)

创建快捷方式后,将其第21个字节(位置0x15)更改为32(0x20),使其成为“以管理员身份运行”。将其更改回0使其成为“普通”(非管理员)快捷方式。

答案 3 :(得分:0)

可以完成shortcutjs.bat

shortcutjs.bat -linkfile tst6.lnk -target "%cd%\myscript.bat" -adminpermissions yes

-adminpermissions yes适用于要以管理员身份运行bat的情况。您需要脚本的完整路径。

“以管理员身份运行”对勾会在.lnk文件(第21个字符)中设置一个二进制标志,而脚本也正在执行此操作-将其读取为二进制流并更改该值。