none
远程执行DOS命令,显示在listbox上,时好时坏 RRS feed

  • 问题

  •  

    下面是我的代码,_scope是一个全局变量,程序在最开始已经建立了wmi连接,点击一下netstat -an按钮,执行代码,但是第一次点击按钮肯定是出现密码用户名错误,第二次就正常了,在点一次就出现找不到c$/temp.txt,这些是为什么呢?程序不是按照步骤执行的吗??为什么会出现这么多个结果

            ListBox4.Items.Clear()
            Dim o As New ObjectGetOptions()
            Dim path As ManagementPath = New ManagementPath("Win32_Process")
            Dim processClass As ManagementClass = New ManagementClass(_scope, path, o)
            Dim inParams As ManagementBaseObject = processClass.GetMethodParameters("Create")
            Try
                inParams("CommandLine") = "cmd.exe /c netstat -an > c:/temp.txt"
                Dim outparams As ManagementBaseObject = processClass.InvokeMethod("Create", inParams, Nothing)
                If WmiDomain = Nothing Then
                    Shell("net use \\" & TextBox10.Text & "\ipc$ """ & WmiPwd & """ /user:""" & WmiUser & """")
                Else
                    Shell("net use \\" & TextBox10.Text & "\ipc$ """ & WmiPwd & """ /user:""" & WmiDomain & "\" & WmiUser & """")
                End If
                Dim sr As New StreamReader("\\" & TextBox10.Text & "\c$\temp.txt")
                Dim s As String
                s = ""
                Dim arrText As New ArrayList()
                Do
                    s = sr.ReadLine()
                    If Not s Is Nothing Then
                        arrText.Add(s)
                    End If
                Loop Until s Is Nothing
                sr.Close()

                For Each s In arrText
                    ListBox4.Items.Add(s)
                Next
                inParams("CommandLine") = "cmd.exe /c del c:\temp.txt /f"
                outparams = processClass.InvokeMethod("Create", inParams, Nothing)
                Shell("net use \\" & TextBox10.Text & "\ipc$  /delete")
            Catch ex As Exception
                MsgBox(ex.Message)

            End Try

    2008年1月28日 8:13

答案

  •  squall_sw 写:

     

    那请问有没有什么办法可以做到等上面那句话执行完毕后在继续执行下面的语句??

     

    shell函数的Wait 参数设为true

    2008年1月28日 9:38
    版主

全部回复

  •  

    去掉try

     

    单步跟踪看到底那句出错

    2008年1月28日 8:33
    版主
  •  

       Dim sr As New StreamReader("\\" & TextBox10.Text & "\c$\netstat.txt")

    这句话出错,提示未知的用户名和密码。

    可是我上面那句不是已经执行并且建立了ipc$连接吗?为什么这句还会出错呢?

     

    但是我加入断点逐步执行的时候又不会显示出错,一切都正常的。。。。。。。。。。。。

    2008年1月28日 8:37
  •  squall_sw 写:

     

       Dim sr As New StreamReader("\\" & TextBox10.Text & "\c$\netstat.txt")

    这句话出错,提示未知的用户名和密码。

    可是我上面那句不是已经执行并且建立了ipc$连接吗?为什么这句还会出错呢?

     

    但是我加入断点逐步执行的时候又不会显示出错,一切都正常的。。。。。。。。。。。。

     

    可能是上面的语句还没执行完

    2008年1月28日 8:48
    版主
  •  

    那请问有没有什么办法可以做到等上面那句话执行完毕后在继续执行下面的语句??
    2008年1月28日 9:24
  •  squall_sw 写:

     

    那请问有没有什么办法可以做到等上面那句话执行完毕后在继续执行下面的语句??

     

    shell函数的Wait 参数设为true

    2008年1月28日 9:38
    版主