我有一个安装程序(Inno-Setup),可以将我的应用程序安装到用户定义的路径中。在安装例程结束时,我想创建一个以管理员权限启动应用程序的快捷方式。该解决方案适用于从winXP到Win7的所有win版本
我能做些什么来实现这个目标?
我知道它是possible with a batch script, that executes a nasty vb-script。缺点是cmd窗口弹出窗口,它只适用于win7我猜。
我还尝试使用命令mklink
来创建超链接,但它不起作用,因为无法传递设置管理员权限的参数。
答案 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个字符)中设置一个二进制标志,而脚本也正在执行此操作-将其读取为二进制流并更改该值。