在Vista以后的windows版本中,有些时候需要提升编译后生成程序的权限,即希望让生成的程序以管理员身份运行。虽然在一般情况下,可以使用鼠标右键选择的方式来强行以管理员身份运行,但它并没有屏蔽普通运行方式,而且普通人通常也不会使用右键选择以管理员身份运行,所以必须在生成程序时就限定程序只能以管理员方式来运行。
在Vista以后的windows版本中,微软引入了UAC机制,它的目的是防止程序对操作系统本身进行恶意篡改。要让程序以管理员身份运行,就需要在程序中引入UAC标注,也即让程序显示“UAC盾牌”(就是软件icon右下角会有一个盾牌的logo)
UAC Execution Level可选参数:
0: asInvoker:应用程序将使用与启动它的进程相同的权限运行。 可通过选择“以管理员身份运行”将应用程序提升为更高权限。 (俗称中权限)
1: highestAvailable:应用程序将使用可能的最高权限级别运行。 如果启动该应用程序的用户为管理员组的一个成员,则此选项与 requireAdministrator 相同。 如果可用的最高权限级别高于打开进程的级别,则系统将提示提供凭据。
2: requireAdministrator:应用程序将使用管理员权限运行。 启动该应用程序的用户必须是管理员组的一个成员。 如果打开进程未使用管理权限运行,则系统将提示提供凭据。(俗称高权限)
对于unity程序,打包是使用的windowsplayer.exe文件(路径就在下面)来打包的,level的设置是在unity的安装目录下的Data\PlaybackEngines\windowsstandalonesupport\Source\WindowsPlayer\WindowsPlayer\WindowsPlayer.manifest"
当level = asInvoker的时候,没有小盾牌
当level = requireAdministrator的时候,是有小盾牌的
官方文档解释manifest文件属性
unity打包win包将高权限改为中权限的一个处理方案
tips1:如果level = anInvoker 但打出来的包仍然有小盾牌,或者包移动到其他电脑上显示出了小盾牌,那么需要查一下打包后的脚本操作。比如可以通过这种方法修改,进行权限签名操作。(也就是说可以通过外部命令行的形式进行修改)
tips2:为什么我的电脑图标带有小盾牌,却没有弹出让我获取管理员权限的提示呢?
跟自己的电脑安全设置有关
如果觉得《unity打包的windows程序运行权限问题整理》对你有帮助,请点赞、收藏,并留下你的观点哦!