DOS命令行(11)——更多实用的命令行工具

start

启动另一个窗口运行指定的程序或命令,所有的DOS命令和命令行程序都可以由start命令来调用。该命令不仅能运行程序,还能运行协议对应的程序
命令格式:START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED] [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL] [/NODE <NUMA node>] [/AFFINITY <hex affinity mask>] [/WAIT] [/B] [command/program] [parameters]
参数说明:
  • /"title" 在窗口标题栏中显示的标题。
  • /path 启动目录。
  • /B 启动应用程序,但不创建新窗口。应用程序已忽略 ^C 处理。除非应用程序启用 ^C 处理,否则 ^Break 是唯一可以中断该应用程序的方式。
  • /I 新的环境将是传递给 cmd.exe 的原始环境,而不是当前环境。
  • /MIN 以最小化方式启动窗口。
  • /MAX 以最大化方式启动窗口。
  • /SEPARATE 在单独的内存空间中启动 16 位 Windows 程序。
  • /SHARED 在共享内存空间中启动 16 位 Windows 程序。
  • /LOW 在 IDLE 优先级类中启动应用程序。
  • /NORMAL 在 NORMAL 优先级类中启动应用程序。
  • /HIGH 在 HIGH 优先级类中启动应用程序。
  • /REALTIME 在 REALTIME 优先级类中启动应用程序。
  • /ABOVENORMAL 在 ABOVENORMAL 优先级类中启动应用程序。
  • /BELOWNORMAL 在 BELOWNORMAL 优先级类中启动应用程序。
  • /NODE 将首选非一致性内存结构(NUMA)节点指定为十进制整数。
  • /AFFINITY 将处理器关联掩码指定为十六进制数字。进程被限制在这些处理器上运行。将 /AFFINITY 和 /NODE 结合使用时,会对关联掩码进行不同的解释。指定关联掩码,以便将零位作为起始位置(就如将 NUMA节点的处理器掩码向右移位一样)。进程被限制在指定关联掩码和 NUMA 节点之间的那些通用处理器上运行。如果没有通用处理器,则进程被限制在指定的 NUMA 节点上运行。
  • /WAIT 启动应用程序并等待它终止。
  • command/program 如果它是内部 cmd 命令或批文件,则该命令处理器是使用 cmd.exe 的 /K 开关运行的。这表示运行该命令之后,该窗口将仍然存在。如果它不是内部 cmd 命令或批文件,则它就是一个程序,并将作为一个窗口化应用程序或控制台应用程序运行。
  • parameters 这些是传递给 command/program 的参数。
 
注意: 在 64 位平台上不支持 SEPARATE 和 SHARED 选项。
 
例1、以最小化的方式打开"D:\abc.bat"
start /min d:\abc.bat
例2、以最大化的方式打开D:\abc.bat,并显示标题为"def"
start /max "def" "d:\abc.bat"
例3、以不创建新窗口打开"D:\abc.bat"
start /b d:\abc.bat
例4、打开默认浏览器
start http
例5、打开默认浏览器,并打开"www.baidu.com"
start http://www.baidu.com
例6、与qq号为"666666"之间发起临时会话
start tencent://message/?uin=666666
 
 

runas

以本地或者是域中的其他帐号的身份去运行一个程序
命令格式1:RUNAS [ [/noprofile | /profile] [/env] [/savecred | /netonly] ] /user:<UserName> program
命令格式2:RUNAS [ [/noprofile | /profile] [/env] [/savecred] ] /smartcard [/user:<UserName>] program
命令格式3:RUNAS /trustlevel:<TrustLevel> program
参数说明:
  • /noprofile 指定不应该加载用户的配置文件。这会加速应用程序加载,但可能会造成一些应用程序运行不正常。
  • /profile 指定应该加载用户的配置文件。这是默认值。
  • /env 要使用当前环境,而不是用户的环境。
  • /netonly 只在指定的凭据限于远程访问的情况下才使用。
  • /savecred 用用户以前保存的凭据。
  • /smartcard 如果凭据是智能卡提供的,则使用这个选项。
  • /user <UserName> 应使用 USER@DOMAIN 或 DOMAIN\USER 形式
  • /showtrustlevels 显示可以用作 /trustlevel 的参数的信任级别。
  • /trustlevel <Level> 应该是在 /showtrustlevels 中枚举的一个级别。
  • program EXE 的命令行。请参阅下面的例子
注意: 只在得到提示时才输入用户的密码。
注意: /profile 跟 /netonly 不兼容。
注意: /savecred 跟 /smartcard 不兼容。
 
例1、以管理员身份运行cmd命令提示符
runas /savecred /user:administrator cmd.exe ,按回车输入密码即可
使用/savecred 能够保存凭据,这样在下一次登录就不用再输入密码了。
如果出现“1327: 用户帐户限制阻止了此用户进行登录。”的错误,是因为没有启用管理员账户。需要进行如下操作:在运行中输入 secpol.msc 进入“本地安全策略”一>打开“安全设置”中的“本地策略”一>在“安全选项”中找到“账户:管理员账户状态”一>右击“属性”并勾选“已启用(E)”
如果使用/netonly 参数可以在禁用管理员状态下运行,但无法进行用户修改操作(本质上还是普通用户权限)
 
例2、以管理员身份创建一个用户名为"DDD"密码为"CCC"的账户
runas /savecred /user:administrator "cmd.exe /c net user DDD CCC /add"
 
例3、查看当前账户的信任级别
runas /showtrustlevels
 
 

msg

将消息发送给用户。
命令格式:MSG {username | sessionname | sessionid | @filename | *}
[/SERVER:servername] [/TIME:seconds] [/V] [/W] [message]
参数说明:
  • username 标识指定的用户名。
  • sessionname 会话名。
  • sessionid 会话 ID。
  • @filename 识别这样一个文件,该文件含有将所发消息发送到的用户名、会话名和会话标识号的列表。
  • * 给指定服务器上的所有会话发送信息。
  • /SERVER:servername 要联系的服务器(默认值是当前值)。
  • /TIME:seconds 等待接收器确认消息的时间延迟。
  • /V 显示有关执行的操作的信息。
  • /W 等待用户的响应,跟 /V 一起有用。
  • message 要发送的消息。如果没有指定,发出提示,或者从 stdin读取。
 
例1、给自己发送一则消息,并在5秒后自动关闭
msg %username% /time:5 "hello"
例2、将1.txt的内容发送作为消息发送给自己
msg %username% < 1.txt
例3、给局域网内ip地址为192.168.1.10的主机发送消息
msg /server:192.168.1.10 * "hello"
注:如果有报“获取会话名称时的错误 5”的错误,需要打开控制面板,双击凭据管理器,点击添加windows凭据(第一行写对方电脑的IP地址,第二行写对方电脑的用户名,第三行写对方电脑的密码)
 
 

mshta

mshta.exe是微软Windows操作系统相关程序,英文全称Microsoft HTML Application,可翻译为微软超文本标记语言应用用于执行.HTA文件。HTML Application HOST,HTML应用程序主机,hta文件解释器(也能解释html),就如同IE是html的解释器,CMD是批处理文件的解释器,WScript.exe、CScript.exe是vbs/js脚本的解释器。
由于hta其实也就是html,所以在hta文件中同样可以使用HTML DOM(文档对象模型),如window、document等各种对象。上面的alert、close就是Window对象的方法。也可以调用ActiveX控件、asp对象,等等。
mshta的命令行参数似乎并未公开,mshta /? 等方式得不到任何帮助信息。
 
例1、打开"D:\test.hta"
mshta D:\test.hta
例2、用mshta.exe打开当前路径下的"test.html"
mshta %cd%\test.html
 
例3、调用JavaScript弹出警示窗口,内容为"hello"
mshta javascript:alert("hello");window.close()
例4、调用VBScript弹出选择提示窗口,标题为"确定",内容为"是否确定"
mshta vbscript:msgbox("确定",36,"是否确定")(window.close)
例5、调用VBScript执行连续弹出2个选择提示窗口,第一个窗口的内容为"one box",第二个窗口内容为"two box"
mshta vbscript:execute("msgbox ""one box"":msgbox ""two box"":window.close")
 
例6、调用VBScript,使用CreateObject函数引用系统阅读对象,阅读内容为"hello"
mshta vbscript:CreateObject("sapi.spvoice").speak("hello")(window.close)
例7、调用VBScript,使用CreateObject函数引用Shell.Application对象,最小化桌面的所用窗口
mshta vbscript:CreateObject("Shell.Application").MinimizeAll()(window.close)
例8、调用VBScript,使用CreateObject函数引用ShellApplication对象的ShellExecute方法,以管理员身份执行cmd命令,添加账户"hacker$",设置密码为"123456",并添加到管理员组(Administrators) (执行该命令时会被系统账户控制(UAC)拦截)
mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c net user hacker$ 123456 /add & net localgroup Administrators hacker$ /add","","runas",1)(window.close)
 
扩展:
CreateObject是指创建并返回一个对 ActiveX 对象的引用的函数。
Shell.Application表示外壳中的对象。方法被提供于控制外壳和执行外壳内的命令,也有一些方法获得其他外壳相关的对象。
 
 

rundll32

作用是执行DLL文件中的内部函数,这样在进程当中,只会有Rundll32.exe,而不会有DLL后门的进程,这样,就实现了进程上的隐藏。
动态链接库英文为DLL,是Dynamic Link Library的缩写。DLL是一个包含可由多个程序,同时使用的代码和数据的库。在Windows中,这种文件被称为应用程序拓展。
注意,rundll与其他外部程序命令不同,它的内部函数有着严格的大小写区分
 
命令格式:RUNDLL32.EXE <dllname>,<entrypoint> <optional arguments>
 

1. 改变工作状态

例1、使计算机进入锁屏界面
rundll32 user32.dll,LockWorkStation
例2、让计算机进入睡眠(待机)状态
rundll32 powrprof.dll,SetSuspendState
 

2. 实现对控制面板各个选项的显示

例1、显示控制面板
rundll32 shell32.dll,Control_RunDLL
例2、显示 “控制面板-程序和功能-Windows功能”面板
rundll32 shell32.dll,Control_RunDLL appwiz.cpl,,2
例3、显示 “控制面板-键盘属性-速度”选项视窗
rundll32 shell32.dll,Control_RunDLL main.cpl @1
 
 

3. 实现对IE浏览器缓存及痕迹清理

例1、删除Internet临时文件(缓存)
rundll32 inetcpl.cpl,ClearMyTracksByProcess 8
例2、删除Cookie
rundll32 inetcpl.cpl,ClearMyTracksByProcess 2
例3、删除历史记录
rundll32 inetcpl.cpl,ClearMyTracksByProcess 1
例4、删除表单数据
rundll32 inetcpl.cpl,ClearMyTracksByProcess 16
例5、删除密码
rundll32 inetcpl.cpl,ClearMyTracksByProcess 32
例6、全部删除
rundll32 inetcpl.cpl,ClearMyTracksByProcess 255
例7、全部删除(包括插件的设置和文件)
rundll32 inetcpl.cpl,ClearMyTracksByProcess 4351
 

4. 其他命令

例1、管理IE浏览器的收藏夹
rundll32 shdocvw.dll,DoOrganizeFavDlg
例2、打开"C:\Users\Public\a.txt"文件的打开方式对话框
rundll32 shell32.dll,OpenAs_RunDLL c:\users\public\a.txt
例3、打开文件资源管理器选项
rundll32 shell32.dll,Options_RunDLL
例4、打开任务栏属性
rundll32 shell32.dll,Options_RunDLL 1
例4、管理系统存储的用户名和密码
rundll32 keymgr.dll,KRShowKeyMgr
例5、处理空闲任务
rundll32 advapi32.dll,ProcessIdleTasks
 

5. 特殊命令

例1、用rundll32.exe运行js脚本代码,弹出警告提示框,内容为"ALERT"
rundll32 javascript:"\..\mshtml,RunHTMLApplication ";alert('ALERT');window.close();
注意:...RunHTMLAppication与 " 之间存在空格
例2、用rundll32.exe运行js脚本代码,调用接口函数执行vbs脚本代码弹出提示框,提示内容为"hello"
rundll32 javascript:"\..\mshtml,RunHTMLApplication ";window.execScript("msgbox('hello')","vbs");window.close();
注意:以上两种命令容易被杀毒软件当做是脚本攻击而拦截
 
例3、用rundll32.exe打开网页,"www.baidu.com"
① rundll32 url.dll,OpenURL http://www.baidu.com
② rundll32 url.dll,OpenURLA http://www.baidu.com
③ rundll32 url.dll,FileProtocolHandler http://www.baidu.com
以上的三条命令还可用于打开文件或其他协议类型,如下
例4、用rundll32.exe打开文件,"c:\users\public\a.txt"
① rundll32 url.dll,OpenURL c:\users\public\a.txt
② rundll32 url.dll,OpenURLA c:\users\public\a.txt
③ rundll32 url.dll,FileProtocolHandler c:\users\public\a.txt
 
 

wusa

更新独立安装程序(可以进行补丁的安装与卸载)
命令格式1:wusa <update> /extract:<destination> [/log:<file name>]
命令格式2:wusa <update> [/quiet] [/norestart | /warnrestart:<seconds> | /promptrestart | /forcerestart] [/log:<file name>]
命令格式3:wusa /uninstall <update> [/quiet] [/norestart | /warnrestart:<seconds> | /promptrestart | /forcerestart] [/log:<file name>]
命令格式4:wusa /uninstall /kb:<KB number> [/norestart | /warnrestart:<seconds> | /promptrestart | /forcerestart] [/log:<file name>]
参数说明:
  • update MSU文件的完整路径
  • /quiet 安静模式,无用户交互。根据需要重启。
  • /uninstall 安装程序将卸载程序包
  • /kb 与/uninstall 结合使用时,安装程序将卸载与KB数关联的程序包
  • /norestart 与/quiet 结合使用时,安装程序将不会启动重启
  • /warnrestart 与/quiet 结合使用时,安装程序将在启动重启前向用户发出警告
  • /promptrestart 与/quiet 结合使用时,安装程序将在启动重启前予以提示
  • /forcerestart 与/quiet 结合使用时,安装程序将强制性关闭应用程序并启动重启
  • /log 安装程序将启用日志记录
 
例、在安静模式且不重启,卸载补丁号为KB4012598的补丁程序包
wusa /uninstall /kb:4012598/quiet /norestart
(注:查看本机上已安装的补丁用wmic qfe命令)
 
 

assoc

显示或修改文件扩展名关联
命令格式:assoc [.ext[=[fileType]]]
参数说明:
  • .ext 指定跟文件类型关联的文件扩展名
  • fileType 指定跟文件扩展名关联的文件类型
用法1:键入 assoc 而不带参数,显示当前所有文件关联列表。
例、assoc
 
用法2:只跟文件扩展名参数,显示单个文件类型的文件关联
例、assoc .apk
 
用法3:给文件添加关联 (需要管理员权限)
例、assoc .apk=360apk
注:这个用法相当危险,如果将所有扩展名的关联都更改为txtFile,那系统将无法运行程序,修复也很困难。
 
 

ftype

显示或修改用在文件扩展名关联中的文件类型
命令格式:ftype [fileType[=[openCommandString]]]
参数说明:
  • fileType 指定要检查或改变的文件类型
  • openCommandString 指定调用这类文件时要使用的开放式命令
 
例1、查看文档类型的默认打开可执行程序
ftype txtFile
例2、修改.exe文件类型的默认打开程序
ftype exefile=C:\WINDOWS\system32\NOTEPAD.EXE %1
 
问:
ftype txtfile=C:\WINDOWS\system32\NOTEPAD.EXE ---去除后面的命令字符串 %1 会怎样?
答:
%1有何作用?%1的作用就是一个变量,用于关联文件名(如:this.txt)。
去除了%1有什么后果?去除%1这个变量之后,当你再次双击打开一个文件(如:this.txt),可执行程序NOTEPAD.EXE会不知道你打开的文件具体是哪一个,默认只是打开了一个无标题的空白新文档。
 
问:
ftype exefile="%1" ---去除后面的命令字符串%* 会怎样?
答:
exefile="%1" %* ---exefile文档类型的比较特殊,只有两个参数,很有代表性,%1 和 %*,%1代表文件自身,%*代表文件执行需要的参数
去除了%*会有什么后果?去除%*这个特殊变量之后,很有可能当你打开一个可执行文件的时候,该文件不能正常工作,如:一个播放器,可能他的参数包括 /play /pause,如果你去除了这个%*参数,当你打开这个播放器的时候,播放器并不能播放你上次未播放完的视频
 
 

chcp

显示或设置活动代码页编号。
命令用法:chcp [nnn]
参数说明:nnn 指定代码页编号。
不带参数键入 CHCP 以显示活动代码页编号。
常见的代码页编号:
65001   UTF-8代码页
950 繁体中文
936 简体中文默认的GBK
437 MS-DOS美国英语
 
若cmd命令行出现中文乱码,可输入chcp 65001解决
 
 

slmgr

软件授权管理工具。是管理系统激活和密钥、证书的主要组件。
slmgr的所有功能都是通过slmgr.vbs提供的,采用VBScript命令行方式执行。图形界面中许多与该命令行相关的激活行为,比如系统属性等,都是通过调用slmgr.vbs脚本来执行授权操作。即使你在COMMAND下使用slmgr命令行,其运行结果或出错信息也是以弹出窗口方式显示的。
 
命令用法:slmgr [MachineName [User Password]]
参数说明:
  • MachineName : 远程计算机名 (缺省为本机)
  • User : 具有相应权限的计算机用户
  • Password: 用户密码
  • Option: 为SLMGR的参数
    • ipk <产品密钥> 安装产品密钥(替换现有密钥)
    • upk 卸载产品密钥
    • ato 激活Windows
    • dli [激活 ID | All] 显示许可证信息(默认:当前许可证)
    • dlv [激活 ID | All] 显示详细的许可证信息(默认:当前许可证)
    • xpr 当前许可证状态的截止日期
    • cpky 从注册表中清除产品密钥(阻止泄露引起的攻击)
    • ilc <许可证文件> 安装许可证
    • rilc 重新安装系统许可证文件
    • rearm 重置计算机的授权状态 (去除水印)
    • dti 显示安装 ID以进行脱机激活
    • atp <确认 ID> 使用电话方式提供的确认 ID 激活产品
    • skms 设置KMS服务器名
    • skms 设置KMS服务器端口号
    • skms 设置KMS服务器名和端口号
    • ckms 清除KMS服务器名和端口号并设为初始状态
    • 常用参数选项:
    • 高级参数选项:
    • KMS相关选项
 
例1、安装产品密匙
slmgr -ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
例2、安装OEM证书方法
slmgr -ilc x:\xxx.XRM-MS
例3、激活Windows
slmgr -ato
 
例4、显示许可证激活状态的截止日期
slmgr -xpr
例5、查看许可证的概要信息
slmgr -dli
例6、查看许可证详细信息
slmgr -dlv
 
例7、卸载当前产品密匙
slmgr -upk
例8、清除KMS服务器名和端口号并设为初始状态
slmgr -ckms
例9、重置计算机的授权状态
slmgr -rearm
 
扩展:Windows产品密钥的类型
1、MSDN
  MSDN密钥是付费用户提前获得测试使用WINDOWS系统的一个回报,但是按照规定MSDN是不可以作为商业用途使用的。并且未经过微软许可也不可以随意授权给其他用户使用,不管是规定上还是技术上,微软是随时可以把这一批KEY封杀掉,而且连从谁手里泄露出来的都可以查到。
  MSDN密钥还会根据用户的订阅类型,有两种,一种是一个KEY对应一台机子,也就是相当于订阅用户针对一个产品买了几个KEY。还有一种是一个KEY可以激活N台机子,N决定于用户的订阅许可数量。
  但是不管哪种MSDN密钥,只要在一台机子上激活,似乎微软那边会记录计算机的一些唯一信息。比如CPU ID、主板序列号、硬盘ID等,也就是说一旦更换了硬件,可能需要重新激活并且不一定能够成功。如果不成功,则可能需要电话激活或拨打微软客服对证MSDN帐户就可以激活。所以,在网上购买的别人的MSDN授权KEY就有这个风险,就是别人肯定不会告诉你他的MSDN帐户的。否则微软肯定要封了他的帐户。
 
2、Retail零售版密钥
Retail零售授权版:即通过零售商店获得Windows操作系统的产品的单独授权和激活权利,是Windows许可证的零售版本。可以拥有来自微软的全力技术支持,在这些软件的每一份拷贝,都带有一个唯一的产品密钥(印在产品包装上),产品在安装过程中,用户进入到网上或通过电话完成产品激活。
  零售版密钥是需要在线激活的并且有激活次数限制,一般是5次。当然了激活次数到了也没关系,只需要把你外包装的正版标签传真给微软客服就可以再次激活。
 
3、OEM密钥
  OEM密钥是计算机出厂的时候预装OEM定制WINDOWS自带的,是你花钱买的,费用包含在电脑费用里面,实际上OEM的机子后面或机箱的侧面还会提供一个备用的联网激活密钥。OEM激活需要三个条件:1、包含SLIC的BIOS;2、OEM证书;3、OEM密钥。在实际的使用中,只要虚拟出OEM的软件环境,就可以使用OEM密钥激活任意一台机子。但是OEM密钥也是有在线激活次数限制的。微软统计激活次数似乎是根据计算机的硬件变化情况确定的,但不确认这个说法。但如果超限,采用电话激活或直接找客服一样可以激活。
  OEM License
  电脑厂商的预装系统激活策略,OEM的Windows秘钥在更换内存、硬盘时依然可以激活,但是如果更换了主板激活就会失效。
 
4、VL密钥
  VOLUME批量授权版:VOLUME批量许可证是一个软件许可计划。批量许可计划由用户单独订阅,但通常是卖给企业客户的,可捆绑较多数量的Licenses。
Volume License key
大客户批量授权是企业大量购买,这个在激活端的获取、验证方式比较复杂,但是一个秘钥可以激活对应的台数(几百到数千或数十万不等)。这种激活策略还细分为KMS和MAK两种,前者半年一激活,后者是类“永久”激活。
关于KMS和MAK密钥
  • KMS
此种Key一般是企业向微软批量采购,有几千上万次的有效激活次数,甚至还能重置次数。淘宝上廉价的Key普遍为此。
MAK 密钥与零售密钥行为相类似,不同的是它们拥有更多的激活方法。激活数量视客户购买的许可协议而定。购买的许可证数量与每个密钥提供的激活数量不会 1:1 配对。 MAK密钥的分组也是按照“服务器C”、“服务器B”、“服务器A”、“客户端”的方式进行分组,分组的内容也与KMS的KEY分组相同,但是,与 KMS不同,MAK 密钥用于激活个别系统而不是服务。采用 MAK 后,激活将会与单一产品组直接相关,并且仅可激活特定产品组内的Windows版本。因此,我们说 MAK 密钥本质上是横向的。
 
  • KMS
KMS密钥是供给KMS激活服务器使用的,需要有激活服务器,当输入了相应Key的客户端需要进行KMS激活时,会自动查找网络中的KMS激活服务器,自动激活,有效期为180天,客户端再180天到期会再次查找KMS服务器进行激活。缺点在于不支持重装,且有安全风险。
上一篇:velocity merge作为工具类从web上下文和jar加载模板的两种常见情形


下一篇:【转帖】windows命令行中java和javac、javap使用详解(java编译命令)