标签:des com http class blog code div style img java javascript
为什么提升权限?
因为很多小工具,如果调用了系统的硬件,都需要申请管理员权限。换句话说,必须由管理员下达这个命令才能正常执行,否则就会提示“以管理员身份运行”。
为了尽可能的保证用户们可以正常使用,而不是因为不知道如何正确运行而抱怨软件问题。
众所周知,在Windows Vista版本之后的所有Windows都加入了权限管理控制系统,这样在一定程度上防止了后台运行高级脚本的可能性。但是既然是利用图形化界面来完成的工作(鼠标右键->以管理员身份运行),就一定可以用脚本和命令行来实现。这也是毋庸置疑的。这就是写这个脚本的初衷。
但是这个脚本只是模拟了图形化界面的工作(鼠标右键->以管理员身份运行),所以还是有点小缺陷的。
当时写这个脚本之前,有一个更简单的想法,那就是在命令行里加载Administrator来运行脚本,但是这个是有一定的局限性的。Windows和Linux还是有差别的。
在Windows下,命令runas可以讲一些工具和脚本以其他管理员的身份来运行,但是有一个小前提,那就是,如果你想通过Administrator管理员来运行文件,首先,你的管理员必须有一个密码。这样的话,就不能保证所有用户都能用runas来变相获取权限。
相反,在Linux下,命令sudu就可谓十分方便,在这里也给大家普及一下sudu的知识。
显然,sudu命令使用更方便一些。为了保证所有的用户都能直接获取到权限,我还是用模拟操作法,就是一开始说的,用脚本模拟图形化界面获取权限的操作,然后更新一下代码脚本就行了。使用的时候只需要在你原有的命令前加上Adminrun即可。
语法
Adminrun <exefile> <arguments>
感谢neko13哥帮忙优化脚本,exefile的地址目前可以用当前目录的地址来代替,以前的那个需要用绝对路径,特别感谢。
下面是脚本代码
var cmd = WScript.Arguments.Item(0), arg = ""; if (cmd.substring(1, 2) != ":") { cd = new ActiveXObject("Scripting.FileSystemObject").GetFolder(".").Path; if (cd.substring(cd.length-1, cd.length) != "\\") cd += "\\"; cmd = cd+cmd; } for (var i = 1; i < WScript.Arguments.Count(); ++i) arg += WScript.Arguments.Item(i) + " "; try { new ActiveXObject("Shell.Application").ShellExecute(cmd, arg, null, "runas", 1); } catch(e) { WScript.Echo("[!] adminrun failed: "+e.description); }
Adminrun 提升命令行下运行权限脚本,码迷,mamicode.com
标签:des com http class blog code div style img java javascript
原文地址:http://www.cnblogs.com/polossk/p/3694631.html