这篇文章主要介绍了CMD命令行中以管理员权限启动应用程序实现方法,本文使用一个JS脚本来实现,需要的朋友可以参考下

很多时候我们需要管理员权限来运行bat那么就需要结合vbscript来实现了

方法一:

%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit

常用

@echo off
mode con lines=30 cols=60
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"
rem 下面可以写你的bat代码了

方法二:

@echo off
%1 %2
ver|find "5.">nul&&goto :st
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :st","","runas",1)(window.close)&goto :eof
:st
copy "%~0" "%windir%\system32\"

原理类似

ShellExecute method

Run a script or application in the Windows Shell.

Syntax
.ShellExecute "application", "parameters", "dir", "verb", window

.ShellExecute 'some program.exe', '"some parameters with spaces"', , "runas", 1
Key
application The file to execute (required)
parameters Arguments for the executable
dir Working directory
verb The operation to execute (runas/open/edit/print)
window View mode application window (normal=1, hide=0, 2=Min, 3=max, 4=restore, 5=current, 7=min/inactive, 10=default)
Note the different (double " and single ' ) quotes that can be used to delimit paths with spaces.

The runas verb is undocumented but can be used to elevate permissions. When a script is run with elevated permissions several aspects of the user environment may change: The current directory, the current TEMP folder and any mapped drives will be disconnected.

runas will fail if you are running in WOW64 (a 32 bit process on 64 bit windows) for example %systemroot%\syswow64\cmd.exe ...

The ShellExecute method is a member of the IShellDispatch2 object.

Examples

Run a batch script with elevated permissions, flag=runas:

Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "E:\demo\batchScript.cmd", "", "", "runas", 1

Run a VBScript with elevated permissions, flag=runas:

Set objShell = CreateObject("Shell.Application")
objShell.ShellExecute "cscript", "E:\demo\vbscript.vbs", "", "runas", 1

“If you don't execute your ideas, they die” ~ Roger Von Oech

Related:

Run with elevated permissions - Script to run as Admin
.Exec - Execute command, returning an object
.Run - Run a command
joeware.net - CPAU (Create Process As User) like RunAs but with an options to encrypt the password.
Equivalent CMD command: ShellRunAs - Run a command under a different user account

批处理文件中的%~dp0表示含义

~是扩展的意思,相当于把一个相对路径转换绝对路径
%0代指批处理文件自身
%1表示批处理文件命令行接收到的第一个参数,%2表示第二个,以此类推
%~d0 是指批处理所在的盘符,其中d代表drive
%~p0 是指批处理所在的目录,其中p代表path
%~dp0 是批处理所在的盘符加路径

cd %~dp0 就是进入批处理所在目录了

详细解释还可参考命令 call /?

自从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的检查,还是会有一个对话框弹出来要点“确定”的。

原文地址: http://www.jb51.net/article/67623.htm

CMD命令行中以管理员权限启动应用程序实现方法相关推荐

  1. cmd传入命令行打开程序_CMD命令行中以管理员权限启动应用程序实现方法

    很多时候我们需要管理员权限来运行bat那么就需要结合vbscript来实现了 方法一: %1 mshta vbscript:CreateObject("Shell.Application&q ...

  2. 修改cmd 命令行中的用户名|C:\Users\下的用户名

    修改cmd命令行中的用户名(文末有详细视频教程) 由于我现在换了一个喜欢的用户名,所以我想修改cmd命令行显示的用户名,即c盘用户文件夹下的文件名,但是一般用户文件夹下的名字是无法直接修改的,这里提供 ...

  3. Curl学习日记2 - 在Windows CMD命令行中使用Curl

    在Windows CMD命令行中使用Curl 目录 在Windows CMD命令行中使用Curl 1.下载 2.安装 3.使用 4.GIT下使用Curl命令(windows命令行中) 下载Git 安装 ...

  4. 在window的cmd命令行中通过chcp修改代码页--正确显示utf-8字符

    Mt8616的开发板通过adb工具可以在Windows系统的cmd命令行显示出debug信息,但是mt8516开发板的系统上是移植的裁剪的linux系统,也就是里面的文件是utf-8的编码形式,不能正 ...

  5. linux下logcat命令,Android shell命令行中过滤adb logcat输出的几种方法

    我们在Android开发中总能看到程序的log日志内容充满了屏幕,而真正对开发者有意义的信息被淹没在洪流之中,让开发者无所适从,严重影响开发效率.本文就具体介绍几种在shell命令行中过滤adb lo ...

  6. 在CMD命令行中切换到管理员权限模式

    1.打开CMD 2.输入: runas /noprofile /user:Administrator cmd 3.输入Administrator账户的密码,必须设置密码 PS:可以不是Administ ...

  7. Windows 如何在cmd命令行中查看、修改、删除与添加环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方 ...

  8. windows cmd命令行中 查看 修改 删除与添加环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方 ...

  9. 如何在cmd命令行中查看、修改、删除与添加环境变量

    首先明确一点: 所有的在cmd命令行下对环境变量的修改只对当前窗口有效,不是永久性的修改.也就是说当关闭此cmd命令行窗口后,将不再起作用.永久性修改环境变量的方法有两种:一种是直接修改注册表(此种方 ...

最新文章

  1. CALL TRANSACTION
  2. cmd 找不到java power 可以_高三总是找不到学习状态?这几个方法一定可以帮到你!...
  3. android gridview横向显示图片,Android使用Gridview单行横向滚动显示
  4. 机器学习——Day 1 数据预处理
  5. Android-Device supports x86,but APK only supports armeabi-v7a,armeabi,x86_64
  6. 【论文笔记】ego_planner_swarm
  7. 如何撰写优秀的谷歌AD广告标题?
  8. win10 如何更换即将过期的产品密钥
  9. 科学家发现孤独感与大脑中的默认网络有关
  10. 11发布自己的镜像(阿里云)
  11. ubuntu 双显示屏设置 一个正常 一个不行的问题
  12. 龙芯平台OsTools-Gmac更新
  13. 数据库原理及应用(MySQL版)MySQL实验指导参考答案(实验一到实验八)
  14. IT 公司的(大)前端团队体系都是怎样的?
  15. 闲鱼卖家近期卖出后纠纷4次,请谨慎交易怎么办?
  16. 电脑流量监控软件监控局域网员工电脑流量使用情况
  17. ORACLE之NLS的那些事
  18. itextsharp操作pdf——插入图片
  19. MATLAB元胞数组与结构体
  20. discuz3.4论坛获取邀请码的迷茫之路--自己生成邀请码

热门文章

  1. PCB绘制与制作的总结
  2. Ubuntu入门编写
  3. 浙江省南浔区家庭光伏企业规范要求
  4. arduino 基础设备使用-数码管
  5. 【智能门禁系统设计】——所需要的软件技术和框架
  6. win10禁用驱动程序强制签名_一个命令永久禁用Win10驱动程序强制签名
  7. 【蒸馏+剪枝】(一)Cascaded channel pruning using hierarchical self-distillation
  8. 前端开发:Web性能优化有哪些方法?
  9. 【Spring Security】解答Spring Boot 中密码加密的正确方式?
  10. Vue3+node.js网易云音乐实战项目(三)