一、使程序默认以管理员权限运行
win7户帐户控制(UAC)功能可以为用户提供一个安全的桌面环境,所有程序默认都运行在普通权限(中完整性级别)下,有可能修改系统设置或文件的操作都需要经过用户的明确批准才能以高级权限(高完整性级别)执行。有的时候,我们需要某些程序运行在高权限下,只需在程序或快捷方式上点击右键,选择“以管理员身份运行”,如果希望该程序每次都以高权限运行可以在程序或快捷方式的属性中切换到“兼容性”选项卡,勾选“以管理员身份运行此程序”即可.但是,如果你希望对 Windows 内置的应用程序应用这样的设置呢?例如,有的IT管理员可能需要经常以管理员身份运行命令提示符cmd执行系统管理命令,每次都点右键显然很烦人。当他试图为命令提示符程序设置兼容性模式时,会看到这样的提示:“由于这个程序是该版本 Windows 的一部分,无法在上面设置兼容模式。”
要解决这个问题,让命令提示符每次都强制以管理员身份运行,你可以使用以下几种方式:
1、修改文件绕过系统验证(不推荐)
首先你可能会想到,系统是如何判断这个程序是系统内置程序的呢?如果把文件从系统文件夹拷贝出来,可以解决以上问题吗?实验结果是不行的,因为系统是通过数字签名来判断该程序是否是 Windows 内置的。数字签名是保证文件在发布之后不被修改,并且标明发布者身份的一种技术,只要文件被修改,该文件的 Windows 签名就会失效,系统就不会认为它是内置程序了。但修改系统文件不是一种好方法,我们有更好的办法可以实现。
2、注册表设置兼容性选项
其实,文件的兼容性设置的选项是保存在用户的注册表中的。我们可以运行注册表编辑器,然后找到 HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers(针对当前用户有效)或者HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers(针对所有用户有效) 这个路径,其中就保存了已经设置兼容性模式的所有程序及其设置信息:
例如: 我们可以添加cmd.exe:
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" /v "C:\Windows\System32\cmd.exe" /d RUNASADMIN
或者:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers]
"c:\\windows\\system32\\cmd.exe"="RUNASADMIN"
新建一个字符串值,命名为"c:\windows\system32\cmd.exe",然后右键--修改 -- 数值数据写入“RUNASADMIN”,确定 !
3、快捷方式设置
第二种方法也很方便,只需在程序的快捷方式上点右键,选择‘属性’,并单击“快捷方式”选项卡上的“高级”按钮,看到没,在这里也有一个“以管理员身份运行”的选项。选中之后,我们的目的就达到了。
不过需要注意的是,第二种方法是对当前用户生效的,第三种方法只是快捷方式的一个属性,因此只对该快捷方式生效。例如,对开始菜单中的“画图”快捷方式进行了该设置,只有在单击该快捷方式时才会以管理员身份运行画图程序,运行其他地方的快捷方式,以及直接运行画图程序exe都不会应用该设置。
当然你可以直接关闭UAC功能。
二、添加右键菜单
1、将cmd.exe添加到右键菜单
1.1、在文件夹上点右键时的菜单
在HKEY_CLASSES_ROOT\Folder\shell下增加一个“CMD”子键,将该子键的“(默认)”键值修改为“CMD快速通道”,然后在该子键下再建立一个子键“command”,将“command”的“(默认)”键值修改为“cmd.exe /k cd %1”。
批处理:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\folder\shell\cmd]
@="CMD快速通道"
[HKEY_CLASSES_ROOT\folder\shell\cmd\command]
@="cmd.exe /k cd %1"
1.2、在文件夹内点右键时的菜单
在文件夹内部,win7默认按住shift再右键,会出现“在此处打开命令窗口”。但是我嫌这样还是太麻烦,我想直接右键。
1.2.1、普通文件夹右键:
具体做法同1.1,在HKEY_CLASSES_ROOT\Directory\Background\shell下增加一个“CMD”子键,将该子键的“(默认)”键值修改为“CMD快速通道”,然后在该子键下再建立一个子键“command”,将“command”的“(默认)”键值修改为“cmd.exe /k cd %1”。
但是我的win7中注册表已经存在HKEY_CLASSES_ROOT\Directory\Background\shell\cmd\command,此时请将HKEY_CLASSES_ROOT\Directory\Background\shell\cmd下的键Extended改名或者删除。
1.2.1、磁盘分区右键:
同上,将注册表HKEY_CLASSES_ROOT\Drive\shell\cmd下的键Extended改名或者删除。
2、使其具有管理员权限
从以上右键菜单打开的命令窗口没有管理员权限,有两种方法:
2.1 按照“一、使程序默认以管理员权限运行”中的方法使C:\Windows\System32\cmd.exe具有管理员权限。
2.2、在以上添加右键菜单时,使注册表中对应的shell\cmd修改成shell\runas即可。