当前位置: 首页 > news >正文

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

很多时候我们需要管理员权限来运行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 ”就可以了,比如“Elevate cmd /k”。

当然,这个逃不过UAC的检查,还是会有一个对话框弹出来要点“确定”的。

本文标题: CMD命令行中以管理员权限启动应用程序实现方法

本文地址: http://www.cppcns.com/jiaoben/dosbat/126245.html

相关文章:

  • gb和gib的区别_GB和GiB的区别
  • p6与project哪个软件好_多功能记事本软件哪个好?
  • python tensorflow教程推荐_有哪些学习python和tensorflow的书籍值得推荐呢?
  • 计算机网络课设telnet_修改windows的telnet默认根路径
  • centos7安装php5.2yum源操作_centos 7.4系统yum安装php最新版本php7.2
  • 笔记本卡顿不流畅是什么原因_电脑卡顿不流畅是什么原因?PC卡顿原来可以这么解决...
  • web前端行业调研报告_2015 年 JavaScript 开发者调查报告
  • centos7双机搭建_centos 7之keepalived双机热备理论+配置文件详解
  • uni 获取本地文件_uni-app 接口 - 从本地相册选择图片或使用相机拍照
  • oracle 日期改字符格式_oracle中的日期格式及和字符转换
  • chrome切换前端模式_谷歌 Chrome 默认启用HTML5模式
  • payload sql注入_Web安全:SQL注入工具
  • java负数右移_Java中的左移时的负数问题
  • winapi属于底层开发吗_WinAPI简单入门
  • reflexil教程_教你使用 Reflexil 反编译.NET 转
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • JavaScript-Array类型
  • JAVA多线程机制解析-volatilesynchronized
  • Js基础——数据类型之Null和Undefined
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Travix是如何部署应用程序到Kubernetes上的
  • vue--为什么data属性必须是一个函数
  • 分布式任务队列Celery
  • 缓存与缓冲
  • 简析gRPC client 连接管理
  • 开源SQL-on-Hadoop系统一览
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 前端工程化(Gulp、Webpack)-webpack
  • 悄悄地说一个bug
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 数据库写操作弃用“SELECT ... FOR UPDATE”解决方案
  • 项目管理碎碎念系列之一:干系人管理
  • 小程序01:wepy框架整合iview webapp UI
  • 责任链模式的两种实现
  • 追踪解析 FutureTask 源码
  • scrapy中间件源码分析及常用中间件大全
  • 大数据全解:定义、价值及挑战
  • 带你开发类似Pokemon Go的AR游戏
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​低代码平台的核心价值与优势
  • !$boo在php中什么意思,php前戏
  • (12)Linux 常见的三种进程状态
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (顶刊)一个基于分类代理模型的超多目标优化算法
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • .describe() python_Python-Win32com-Excel
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET gRPC 和RESTful简单对比
  • .NET/C# 使窗口永不获得焦点
  • .net和php怎么连接,php和apache之间如何连接
  • .net网站发布-允许更新此预编译站点
  • @SuppressLint(NewApi)和@TargetApi()的区别
  • [.net]官方水晶报表的使用以演示下载