502762378 发表于 2012-6-5 20:30:41

说实话我还有其他方法,怕不通用,你确定你上边的show不出界面吗?哈哈,非常感谢
RemoteExecute("c:\windows\system32\calc.exe")                                                      ; This works - executes on local pc

Func RemoteExecute($strProgToRun)
    Local $objWMIService, $objProcess, $objProgram

    $objSWbemLocator = ObjCreate("WbemScripting.SWbemLocator")
    If Not IsObj($objSWbemLocator) Then
      MsgBox(0, "Error", "Error: failed to create $objSWbemLocator")
      Exit
    EndIf

    $objWMI = $objSWbemLocator.ConnectServer(".", "root\cimv2")    ; This works for remote pc if pass actual credentials and works for local if pass null credentials
    If Not IsObj($objWMI) Then
      MsgBox(0, "Error", "Error: failed to create $objWMI")
      Exit
    EndIf

    $objWMI.Security_.ImpersonationLevel = 3

    $objProcess = $objWMI.Get("Win32_Process")

    $objProgram = $objProcess.Methods_("Create").InParameters.SpawnInstance_
    $objProgram.CommandLine = $strProgToRun

    $objWMI.ExecMethod("Win32_Process", "Create", $objProgram)                                          ; Execute the program now at the command line.

EndFunc

502762378 发表于 2012-6-5 20:34:05

回复 16# 502762378


    晕,还没有远程测试一高兴给妄言了,不过还有一种曲线法,明天测试

xms77 发表于 2012-6-5 21:03:57

回复 15# cj-reggie
谢谢分享这么好的代码,收藏了!

cj-reggie 发表于 2012-6-6 14:20:59

本帖最后由 cj-reggie 于 2012-6-7 14:25 编辑

回复 17# 502762378


    弄出来了分享一下哈,我这边觉得这条路已经到头了
论坛里其实有个大神已经做出来了,只是没源码g
更正,那个大神的也是只能创建进程,没有图形界面,我查了网上相关的,说是用户权限问题,wmi远程运行程序只能在后台,需要给相应权限在当前活动界面下进行交互,依然努力中。。。

cj-reggie 发表于 2012-6-7 07:29:11

继续顶起求给力

wingking84 发表于 2012-6-7 09:53:06

我也正在做这方面的脚本,学习之。

cj-reggie 发表于 2012-6-7 18:15:51

再次顶起求大神指点

xms77 发表于 2012-6-7 22:03:47

回复 22# cj-reggie
我也在关注中,座等~~~~

502762378 发表于 2012-6-12 10:47:00

本帖最后由 502762378 于 2012-6-12 10:49 编辑

回复 19# cj-reggie


    测试失败了。你说的权限是$objWMI.Security_.ImpersonationLevel=3这句。我试过了么用,给你我的法子试试吧,代码不多,但自以为是我在公司后台“杀人越货”的神作
#include <Date.au3>
#include <Constants.au3>
_atexec(@ComputerName,"calc.exe")

Func _atexec($strComputer,$execfile)
        $stime = StringSplit( _DateAdd( 'n',1, _NowCalc())," ")
        $stime_addn1= StringTrimRight($stime,3)
Run(@ComSpec & " /k at\\"&$strComputer&" "&$stime_addn1&" /interactive cmd /c start "&$execfile,@SystemDir,@SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
EndFunc

My2009 发表于 2012-6-12 11:06:28

顶一下先,学习了

cj-reggie 发表于 2012-6-12 16:06:43

本帖最后由 cj-reggie 于 2012-6-13 20:36 编辑

回复 24# 502762378


    哈哈,我也转向计划任务了,不过用wmi的,批量部分总是报错,还在努力中

cj-reggie 发表于 2012-6-14 09:42:35

继续顶起,求大神指点

cj-reggie 发表于 2012-6-14 14:23:55

回复 24# 502762378


    你的这个我测试确实能用,需要都是用户名密码相同的机器即可,问题是时间上应该再延迟一分钟,不然批量的时候有的机器会因为延迟而错过计划任务运行时间

cj-reggie 发表于 2012-6-27 15:52:32

改问win7下如何做到了,xp下已经成功
页: 1 [2]
查看完整版本: 通过wmi使用计划任务启动批量远程win7系统的某个应用程序