Adminrun 提升命令行下运行权限脚本

为什么提升权限?

因为很多小工具,如果调用了系统的硬件,都需要申请管理员权限。换句话说,必须由管理员下达这个命令才能正常执行,否则就会提示“以管理员身份运行”。

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

众所周知,在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 显示版本信息。

Adminrun

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

语法

Adminrun <exefile> <arguments>

感谢neko13哥帮忙优化脚本,exefile的地址目前可以用当前目录的地址来代替,以前的那个需要用绝对路径,特别感谢。

下面是脚本代码

Adminrun.js


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);
}

核心的代码是ShellExecute(cmd, arg, null, “runas”,
1)。最后那个1的意思就是第一个管理员,也就是Admin。
Adminrun 提升命令行下运行权限脚本,码迷,mamicode.com

时间: 2024-10-11 12:35:32

Adminrun 提升命令行下运行权限脚本的相关文章

如何在CLI命令行下运行PHP脚本,同时向PHP脚本传递参数?

<?php/* //命令行输入输出流fwrite(STDOUT,"Enter your name:");$name = trim(fgets(STDOUT));fwrite(STDOUT,"hello,$name");*/echo $argc;if ($argc > 1){print_r($argv);} ?> 另存为 ./test.php [[email protected] test]# php  ./test.php xxx fdf 3Arr

请写出并说明如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数

方法一: <?php if ($argc > 1){ print_r($argv); } ?> php.exe test.php welcome Ricky Feng 方法二: 还有一种这样的,提示用户输入,然后获取输入的参数.有点像C语言 <?php fwrite(STDOUT, "Enter your name: "); $name = trim(fgets(STDIN)); fwrite(STDOUT, "Hello, $name!")

如何在命令行下运行PHP脚本(写出两种方式)同时向PHP脚本传递参数?

腾讯 window下,假设php安装目录为c:\program files\php5\,那么使用命令窗口进入到该路径下,敲入php hello.php回车,则会执行当前路径下的hello.php文件, 如果要指向其他路径下php文件,可以在php 路径/hello.php ,这种形式称为CLI模式,我们平时通过浏览器看到的那种成为CGI模式,至于传递参数,php文件在cli模式下,直接通过在文件名称后面接参数,多个参数中间用空格隔开,在php文件里面是通过两个变量来获取参数的,一个是$argv,

命令行下运行php的方法和技巧

linux中直接用"php"命令来执行php文件 一般在linux命令行下运行php文件的代码: XML/HTML代码 linux下执行:#php安装路径 -f php文件路径 例如:/opt/modules/php/bin/php -f /opt/data/www/yoururl/index.php 每次输入php安装路径比较麻烦,其实我们可以不用输入的哦! 将/opt/modules/php/bin/php 这个文件复制到/usr/sbin下,php将被安装为linux命令 在li

MySQL命令行下执行.sql脚本详解

本文主要介绍一个在MySQL命令行下执行脚本文件的例子,通过这个例子让我们来了解一下在命令行下MySQL是怎样执行脚本的吧.现在我们开始介绍这一过程. 1.首先编写sql脚本,保存为的:book.sql,内容如下: 1 use test; 2 3 create table book 4 5 ( 6 7 tisbn varchar(20) primary key, 8 9 tbname varchar(100), 10 11 tauthor varchar(30), 12 13 chubanshe

Ubuntu 14.04安装完ISE14.4后命令行下运行nautilus报错

我习惯在Terminal下用nautilus命令进入图形界面的文件夹视图,但是在安装完Xilinx ISE14.4后,运行这个命令就会报错: nautilus: /usr/Xilinx/Software/14.4/ISE_DS/ISE/lib/lin64/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/x86_64-linux-gnu/libexempi.so.3) nautilus: /usr/X

Java初学者:java是如何在命令行下编译运行程序的

我们上文书说到,我们首先安装Java,然后设置Java环境,然后编译运行了一个简单的Java程序,在命令行模式下显示了一个“Hello baby”.那么,为什么呢?发生了什么呢? 首先,下载安装Java就不用问为什么了对吧?所谓巧妇难为无米之炊,没有Java却想用,这不可能的. 其次,为什么我们要那样设置Java的运行环境呢? 因为,目前为止,我只是想在命令行下编译运行java程序,这样一来,你就需要让命令行模式识别java的命令.而命令行下能自动识别的命令,必须我们手动的把命令的路径添加进去.

[兴趣使然]用python在命令行下画jandan像素超载鸡

下午刷煎蛋的时候看到 Dthalo 蛋友发的系列像素超载鸡,就想自己试试用python脚本画一个,老男孩视频里的作业真没兴趣,弄不好吧没意思,往好了写,自己控制不好,能力不够. 所以还是找自己有兴趣的先练练手,先实现,然后慢慢解耦. *1.因为颜色有限,给超载鸡染了绿毛. 2.用字符串的join方法尽量减少字符显示宽度的影响. 3.目前用命令行下运行有效,以后应该改为os.system方法运行. 4.试过了字符串的center方法,但是该方法使用的填充字符必须是一个字符,字符串不行. 5.用的 

windows命令行下导入excel数据到SQLite数据库

1.转换文件格式,防止中文乱码:将excel保存成"CSV(逗号分隔)(*.csv)"格式,关闭文件,用记事本打开刚才保存的.csv文件,然后另存为UTF-8格式文本.需要注意的是,经过这样的转换,数字也全变成文本了. 2.通过adb shell(adb.exe存放在android开发软件安装文件夹中,如 F:\Develope\Tools\adt-bundle-windows-x86\sdk\platform-tools\)更改sqlite数据库的使用权限.运行adb之前要先打开AV