现在的位置: 首页 > 综合 > 正文

WifiBuilder – Elevate.js 获取管理员权限脚本

2014年06月06日 ⁄ 综合 ⁄ 共 1519字 ⁄ 字号 评论关闭

Elevate

这个脚本是核心脚本之一,用于提升权限。

为什么提升权限?

因为构建Wifi热点要用到Windows自带的虚拟网卡,这样就牵扯到权限的问题。必须由管理员下达这个命令才能正常执行,否则就会提示“以管理员身份运行”。

为了尽可能的保证用户们可以正常使用,而不是因为不知道如何正确运行而抱怨软件问题。

众所周知,在Windows Vista版本之后的所有Windows都加入了权限管理控制系统,这样在一定程度上防止了后台运行高级脚本的可能性。但是既然是利用图形化界面来完成的工作(鼠标右键->以管理员身份运行),就一定可以用脚本和命令行来实现。这也是毋庸置疑的。这就是写这个脚本的初衷。

但是这个脚本只是模拟了图形化界面的工作(鼠标右键->以管理员身份运行),所以还是有点小缺陷的。

当时写这个脚本之前,有一个更简单的想法,那就是在命令行里加载Administrator来运行脚本,但是这个是有一定的局限性的。Windows和Linux还是有差别的。

在Windows下,命令runas可以讲一些工具和脚本以其他管理员的身份来运行,但是有一个小前提,那就是,如果你想通过Administrator管理员来运行文件,首先,你的管理员必须有一个密码。这样的话,就不能保证所有用户都能用runas来变相获取权限。

相反,在Linux下,命令sudu就可谓十分方便,在这里也给大家普及一下sudu的知识。

sudo

功能说明:以其他身份来执行指令。

语  法:sudo [-bhHpV][-s <shell>][-u <用户>][指令] 或 sudo [-klv]

补充说明:sudo可让用户以其他的身份来执行指定的指令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。 
 
参  数:
 -b  在后台执行指令。 
 -h  显示帮助。 
 -H  将HOME环境变量设为新身份的HOME环境变量。 
 -k  结束密码的有效期限,也就是下次再执行sudo时便需要输入密码。 
 -l  列出目前用户可执行与无法执行的指令。 
 -p  改变询问密码的提示符号。 
 -s<shell>  执行指定的shell。 
 -u<用户>  以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份。 
 -v  延长密码有效期限5分钟。 
 -V  显示版本信息。

Elevate

显然,sudu命令使用更方便一些。为了保证所有的用户都能直接获取到权限,我还是用模拟操作法,就是一开始说的,用脚本模拟图形化界面获取权限的操作,然后更新一下代码脚本就行了。使用的时候只需要在你原有的命令前加上Elevate即可。

使用方法:

Elevate <Commands>

源代码如下:

//Elevate <exefile> <arguments>
var command = WScript.Arguments.Item(0);
var argument = "";
for (var i = 1; 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);
}

抱歉!评论已关闭.