问题
项目中遇到一个奇怪的问题:开发模式下可以正常拖拽文件到界面里打开,以及通过右键打开文件,nsis一打包运行就不行。
经查,是windows下使用了管理员权限运行具有高级权限,拖文件属于低级权限所以不让拖。
解决方案
1.关闭UAC
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA
将该注册表改为0则关闭
注:关闭重启后可能还会变回1
2.nsis调整
nsis安装包运行时是管理员权限,安装完成自动运行就默认了使用管理员权限,可以调整为非管理员权限运行。
原代码
ExecShell "" "$INSTDIR\${PRODUCT_NAME}.exe"
调整后
System::Call 'shell32::ShellExecute(i 0, t"open", t"explorer.exe", t" /e,${PRODUCT_NAME}.exe", t"$INSTDIR\\", i 0)'
注: $INSTDIR\ 表示test.exe所在目录