[WMIC]比CMD更强大的命令行WMIC与AHK完美相遇

这篇文章我打算写一半,下面如何运用就看大家的了!什么意思呢?给大家两个工具剩下的发挥自己的想象力吧!组合之后会发现什么东西好像神奇起来!哈哈!!

引言

这篇文章我打算写一半,下面如何运用就看大家的了!什么意思呢?给大家两个工具剩下的发挥自己的想象力吧!组合之后会发现什么东西好像神奇起来!哈哈!!

一个函数(king推荐的)

通过这个函数你可以运行任意的命令行

示例

 StdoutToVar_CreateProcess("notepad") ;没有返回值
 Version := StdoutToVar_CreateProcess("wmic cpu get Processorid") ;有返回值

StdoutToVar_CreateProcess函数

; Im Original gilt "CP0"; zu CharSet CP850/CP858 vgl.: https://goo.gl/Y8xUYu , http://goo.gl/cMtc6i , https://goo.gl/ssCplI , https://goo.gl/s2P1jK
StdoutToVar_CreateProcess(sCmd, sEncoding:="CP858", sDir:="", ByRef nExitCode:=0) {
	DllCall( "CreatePipe",           PtrP,hStdOutRd, PtrP,hStdOutWr, Ptr,0, UInt,0 )
	DllCall( "SetHandleInformation", Ptr,hStdOutWr, UInt,1, UInt,1                 )

	VarSetCapacity( pi, (A_PtrSize == 4) ? 16 : 24,  0 )
	siSz := VarSetCapacity( si, (A_PtrSize == 4) ? 68 : 104, 0 )
	NumPut( siSz,      si,  0,                          "UInt" )
	NumPut( 0x100,     si,  (A_PtrSize == 4) ? 44 : 60, "UInt" )
	NumPut( hStdInRd,  si,  (A_PtrSize == 4) ? 56 : 80, "Ptr"  )
	NumPut( hStdOutWr, si,  (A_PtrSize == 4) ? 60 : 88, "Ptr"  )
	NumPut( hStdOutWr, si,  (A_PtrSize == 4) ? 64 : 96, "Ptr"  )

	if ( !DllCall( "CreateProcess", Ptr,0, Ptr,&sCmd, Ptr,0, Ptr,0, Int,True, UInt,0x08000000
		, Ptr,0, Ptr,sDir?&sDir:0, Ptr,&si, Ptr,&pi ) )
		return ""
		, DllCall( "CloseHandle", Ptr,hStdOutWr )
		, DllCall( "CloseHandle", Ptr,hStdOutRd )

	DllCall( "CloseHandle", Ptr,hStdOutWr ) ; The write pipe must be closed before Reading the stdout.
	VarSetCapacity(sTemp, 4095)
	while ( DllCall( "ReadFile", Ptr,hStdOutRd, Ptr,&sTemp, UInt,4095, PtrP,nSize, Ptr,0 ) )
	sOutput .= StrGet(&sTemp, nSize, sEncoding)

	DllCall( "GetExitCodeProcess", Ptr,NumGet(pi,0), UIntP,nExitCode )
	DllCall( "CloseHandle",        Ptr,NumGet(pi,0)                  )
	DllCall( "CloseHandle",        Ptr,NumGet(pi,A_PtrSize)          )
	DllCall( "CloseHandle",        Ptr,hStdOutRd                     )
	return sOutput
}

一个比CMD更强大的命令行工具WMIC

以下内容:https://www.cnblogs.com/top5/p/3143837.html

先决条件:
a. 启动Windows Management Instrumentation服务,开放TCP135端口。
b. 本地安全策略的“网络访问: 本地帐户的共享和安全模式”应设为“经典-本地用户以自己的身份验证”。

1. wmic
ode:"192.168.1.20" /user:"domain\administrator" /password:"123456"

2.[硬件管理]:

获取磁盘资料:

wmic DISKDRIVE get deviceid,Caption,size,InterfaceType

获取分区资料:

wmic LOGICALDISK get name,Description,filesystem,size,freespace

获取CPU资料:

wmic cpu get name,addresswidth,processorid

获取主板资料:

wmic BaseBoard get Manufacturer,Product,Version,SerialNumber

获取内存数:

wmic memlogical get totalphysicalmemory

获得品牌机的序列号:

wmic csproduct get IdentifyingNumber

获取声卡资料:

wmic SOUNDDEV get ProductName

获取屏幕分辨率

wmic DESKTOPMONITOR where Status='ok' get ScreenHeight,ScreenWidth

3. PROCESS[进程管理]:

列出进程

wmic process list brief
(Full显示所有、Brief显示摘要、Instance显示实例、Status显示状态)

wmic 获取进程路径:

wmic process where name="jqs.exe" get executablepath

wmic 创建新进程

wmic process call create notepad

wmic process call create "C:\Program Files\Tencent\QQ\QQ.exe"

wmic process call create "shutdown.exe -r -f -t 20"

wmic 删除指定进程:

wmic process where name="qq.exe" call terminate

wmic process where processid="2345" delete

wmic process 2345 call terminate

wmic 删除可疑进程

wmic process where "name='explorer.exe' and

executablepath<>'%SystemDrive%\\windows\\explorer.exe'" delete

wmic process where "name='svchost.exe' and

ExecutablePath<>'C:\\WINDOWS\\system32\\svchost.exe'" call Terminate

 

3. USERACCOUNT[账号管理]:

更改当前用户名

WMIC USERACCOUNT where "name='%UserName%'" call rename newUserName

WMIC USERACCOUNT create /?

4. SHARE[共享管理]:

建立共享

WMIC SHARE CALL Create "","test","3","TestShareName","","c:\test",0

(可使用 WMIC SHARE CALL Create /? 查看create后的参数类型)

删除共享

WMIC SHARE where name="C$" call delete

WMIC SHARE where path='c:\\test' delete

5. SERVICE[服务管理]:

更改telnet服务启动类型[Auto|Disabled|Manual]

wmic SERVICE where name="tlntsvr" set startmode="Auto"

运行telnet服务

wmic SERVICE where name="tlntsvr" call startservice

停止ICS服务

wmic SERVICE where name="ShardAccess" call stopservice

删除test服务

wmic SERVICE where name="test" call delete

6. FSDIR[目录管理]

列出c盘下名为test的目录

wmic FSDIR where "drive='c:' and filename='test'" list

删除c:\good文件夹

wmic fsdir "c:\\test" call delete

重命名c:\test文件夹为abc

wmic fsdir "c:\\test" rename "c:\abc"

wmic fsdir where (name='c:\\test') rename "c:\abc"

复制文件夹

wmic fsdir where name='d:\\test' call copy "c:\\test"

7.datafile[文件管理]

重命名

wmic datafile "c:\\test.txt" call rename c:\abc.txt

8.[任务计划]:

wmic job call create "notepad.exe",0,0,true,false,********154800.000000+480

wmic job call create "explorer.exe",0,0,1,0,********154600.000000+480

 

寄语

希望大家积极参与进来,我希望看到大家创造出来的怪物!有新的组合请留言评论!谢谢大家!

给TA捐赠
共{{data.count}}人
人已捐赠
AHKV1

获取MAC地址的三种方法

2017-12-12 16:40:08

AHKV1游戏

[LOL]卡牌极速切牌

2017-12-12 21:06:30

9 条回复 A文章作者 M管理员
  1. 核心底层开发

    没有一两万以上程序员使用的代码类,写的再好又有多大成就感呢?
    没有几万人使用的工具,工具维护又有多大意义呢?

    基于开源,植入新鲜实质性代码,诸如封装各种语言的调用类、诸如各种平台下的运行包,提供版权式的开发工具编译界面,提供多种开源优质的习惯的项目链式调用(诸如抓包及判断),等等等等,站长是可以成为一代宗师

    • 11010010

      谢谢你提这么多好的建议,提的建议非常好。

  2. 核心底层开发

    封装一些链式方法供大家调用,开源多少站长考虑,我个人建议尽量开源,
    没有羊何来羊毛

  3. 核心底层开发

    站长持有一个编辑器品牌,封装一些带有版权的开发环境(诸如非开源的认证之类),这样的发展是否更佳呢?

  4. 核心底层开发

    站长很用心经营,不过,依我看来,站长获取资金的方向大错特错。
    站长能属于ahk华语第一人,但是,使用ahk的人总共有多少呢?
    若使用ahk的程序员不多,第一人有多大意义呢。
    故,我觉得应该给开发者的不是收取费用,而是与众多分包团队合作,召集任务让更多人来接单,平台收取一定比例作为运营平台的成本

    • 11010010

      嗯嗯 有道理 不过目前的任务量较小 我们团队可以应付起来

  5. 核心底层开发

    偶然看到这个项目,感觉使用代价比较高,非常高

  6. chn.fwt

    用py脚本调用百度文字识别API,然后ahk获取标准输出。很爽,有了这个函数再也不会弹黑框了

    • 11010010

      有个简单的实例就更好了

个人中心
有新私信 私信列表
搜索