【问题标题】:Python: Using wmi to start executable remotelyPython:使用 wmi 远程启动可执行文件
【发布时间】:2015-04-15 19:46:08
【问题描述】:

我正在尝试使用 wmi 模块在 Windows 上远程运行可执行文件。它建立了连接,但我认为我的流程线不正确,因为当我检查服务器时,可执行文件肯定没有运行。你们能帮我看看这个语法吗?

import wmi, time
ip = 'xx.xx.xx.xxx'
username = "user"
password = "password!"
from socket import *
print "Establishing connection to %s" %ip
connection = wmi.WMI(ip, user=username, password=password)
print "Connection established"
print "Starting IO"
connection.Win32_Process.Create(CommandLine='cmd.exe C:\Users\Public\Desktop\Auto_IOX.exe')
time.sleep(60)

【问题讨论】:

    标签: python windows wmi executable


    【解决方案1】:
    import wmi, time
    ip = 'xx.xx.xx.xxx'
    username = "user"
    password = "password!"
    SW_SHOWNORMAL = 1
    from socket import *
    print "Establishing connection to %s" %ip
    c = wmi.WMI(ip, user=username, password=password)
    process_startup = c.Win32_ProcessStartup.new()
    process_startup.ShowWindow = SW_SHOWNORMAL
    process_id, result = c.Win32_Process.Create(CommandLine="C:\User\Administrator\Desktop\runIOX_auto.bat",ProcessStartupInformation=process_startup)
    if result == 0:
      print "Process started successfully: %d" % process_id
    else:
      raise RuntimeError, "Problem creating process: %d" % result
    

    我设法通过创建一个批处理文件来解决这个问题(在 DDay 的帮助下),该文件运行我需要的所有内容并将其放在桌面上然后运行它。

    【讨论】:

    • 不要将批处理文件存储在 System32 目录中。只需在调用Win32_Process.Create 时传递所需的CurrentDirectory,或使用文件的绝对路径,例如r"C:\Users\Public\Scripts\runIOX_auto.bat"。从批处理文件中,您可以获得文件位置为%~dp0,即参数 0 的 [d]rive 和 [p]ath,它始终是批处理文件本身。
    • @eryksun 啊,这是一个更好的主意,我在 system32 目录上做了这个,谢谢!
    【解决方案2】:

    看看 Tim Golden 的 tutorial。您没有使用 Win32_Process.Create 方法返回的信息。

    process_id, result = c.Win32_Process.Create(
      CommandLine="notepad.exe",
      ProcessStartupInformation=process_startup
    )
    

    因此,您可能会错过进程 ID 以及启动该远程进程的结果。

    【讨论】:

    • 这很有帮助,现在我可以看到进程正在运行。但是我不认为它实际上在做它应该做的事情。
    • 其实我只是想通了一点。我只需要将 exe 移动到 notepad.exe 所在的同一个文件夹并运行它,现在它就可以按照它应该的方式运行了。谢谢!
    • 不客气。我想过可执行文件的位置,但没有细想。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2012-10-02
    • 2014-12-17
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    相关资源
    最近更新 更多