10

我有一个安装程序(Inno-Setup),它将我的应用程序安装到用户定义的路径。在安装例程结束时,我想创建一个以管理员权限启动应用程序的快捷方式。该解决方案适用于从 winXP 到 Win7 的所有 win 版本。

我能做些什么来实现这一目标?

我知道可以使用批处理脚本来执行讨厌的 vb-script。缺点是 cmd-window 弹出窗口,我猜它只适用于 win7。

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

4

4 回答 4

13

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

在 下,只需添加一个值为HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers的键(REG_SZ)。启动 exe 时,系统会提示您进行管理员访问。<Path to your exe>RUNASADMIN

有了它,您可以像使用 Inno-Setup 一样简单地创建可执行文件的普通快捷方式。

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

reg add "HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "<Path to your exe>" /t REG_SZ /d RUNASADMIN
于 2013-04-18T13:46:37.117 回答
1

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

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

于 2013-04-18T12:49:16.827 回答
0

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

于 2018-08-23T15:55:19.270 回答
0

可以做到shortcutjs.bat

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

-adminpermissions yes如果您想以管理员身份运行 bat。您需要脚本的完整路径。

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

于 2020-11-09T15:10:49.333 回答