语言让程序默认以管理员权限运行"/>
c/c++语言让程序默认以管理员权限运行
本文来自第七城市,原文地址为.shtml
我只是想以后万一还能用到呢,所以就转发一遍了,再次谢谢原文作者。
有的时候,我们需要某些程序运行在高权限下,只需在程序或快捷方式上点击右键,选择“以管理员身份运行”:
如果希望该程序每次都以高权限运行可以在程序或快捷方式的属性中切换到“兼容性”选项卡,勾选“以管理员身份运行此程序”即可:
这样,每次运行该程序都会请求以管理员身份运行,并且该程序的图标上会多出一个UAC的盾牌图标。某些老旧的应用程序在新的操作系统上遇到运行不正常的情况,就可以通过这种方式来解决。
但是,如果你希望对 Windows 内置的应用程序应用这样的设置呢?例如,有的IT管理员可能需要经常以管理员身份运行命令提示符cmd执行系统管理命令,每次都点右键显然很烦人。当他试图为命令提示符程序设置兼容性模式时,会看到这样的提示:“由于这个程序是该版本 Windows 的一部分,无法在上面设置兼容模式。”
出现这种问题的原因是由于该功能是为了解决老式应用程序的兼容性问题而设计的,而 Windows 内置程序具有先天优势,本身就完全兼容于当前系统,因此不允许为他们设置兼容性属性。
要解决这个问题,让命令提示符每次都强制以管理员身份运行,你可以使用以下几种方式:
-
修改文件绕过系统验证(不推荐)
首先你可能会想到,系统是如何判断这个程序是系统内置程序的呢?如果把文件从系统文件夹拷贝出来,可以解决以上问题吗?实验结果是不行的,因为系统是通过数字签名来判断该程序是否是 Windows 内置的。数字签名是保证文件在发布之后不被修改,并且标明发布者身份的一种技术,只要文件被修改,该文件的 Windows 签名就会失效,系统就不会认为它是内置程序了。但修改系统文件不是一种好方法,我们有更好的办法可以实现。
-
注册表设置兼容性选项
其实,文件的兼容性设置的选项是保存在用户的注册表中的。我们可以运行注册表编辑器,然后找到 HKEY_CURRENT_USER/Software/Microsoft/Windows NT/CurrentVersion/AppCompatFlags/Layers 这个路径,其中就保存了已经设置兼容性模式的所有程序及其设置信息:
-
-
依葫芦画瓢,新建一个字符串值,名称设置为程序的路径(不带引号),数据为“RUNASADMIN”,这样就可以绕过系统的限制,同时又不必修改该程序,强制指定该程序以管理员身份运行了:
-
快捷方式设置
第二种方法也很方便,只需在程序的快捷方式上点右键,选择‘属性’,并单击“快捷方式”选项卡上的“高级”按钮,看到没,在这里也有一个“以管理员身份运行”的选项。选中之后,我们的目的就达到了:
不过需要注意的是,第一种方法是对当前用户生效的,第二种方法只是快捷方式的一个属性,因此只对该快捷方式生效。例如,对开始菜单中的“WPS”快捷方式进行了该设置,只有在单击该快捷方式时才会以管理员身份运行WPS程序,运行其他地方的快捷方式,以及直接运行WPS程序exe都不会应用该设置。
更多推荐
c/c++语言让程序默认以管理员权限运行
发布评论