自从Vista带来了UAC之后,应用程序就变成了两种,有管理员权限的,和没有管理员权限的。一些老的应用程序会莫名其妙地出错,这时候就要考虑右击应用程序,然后“以管理员身份运行”。这还不是什么大问题,exe文件的右键菜单里都会有这个,但是对于一些脚本文件(cmd, js一类)来说,就没那么方便了。通常需要重新开一个带管理员权限的命令行窗口,然后打很多cd回到刚的文件夹,然后再运行脚本,相当麻烦。
搜了一下,找到一个解决办法。把下面的代码保存为Elevate.js:
var command = WScript.Arguments.Item(0);
var argument = "";
for (var i = 0;
i < WScript.Arguments.Count();
++i){
argument += WScript.Arguments.Item(i) + " ";
}
try{
var shellapp = new ActiveXObject("Shell.Application");
shellapp.ShellExecute(command, argument, null, "runas", 1);
}
catch(e){
WScript.Echo("Something wrong: " + e.description);
}
以后要以管理员身份运行程序的时候,只要输入“Elevate <exefile> <arguments>”就可以了,比如“Elevate cmd /k”。
当然,这个逃不过UAC的检查,还是会有一个对话框弹出来要点“确定”的。