Как обновить cmd.exe, вызванный из оболочки VBA или WScript.Shell? - PullRequest
0 голосов
/ 06 января 2020

Я бы хотел обновить командную строку, вызванную из оболочки VBA или команды WScript.Shell, и запустить wsl.exe. Это связано с тем, что wsl.exe не включен в командную строку, вызываемую оболочкой или WScript.Shell.

enter image description here

Sub Sample1()
    Dim WSH, wExec, sCmd, Result As String

    Set WSH = CreateObject("WScript.Shell")
    sCmd = "dir c:\Windows\System32\ws*.exe"
    Set wExec = WSH.Exec("%ComSpec% /c " & sCmd)

    Do While wExec.Status = 0
        DoEvents
    Loop

    Result = wExec.StdOut.ReadAll

    MsgBox Result

    Set wExec = Nothing
    Set WSH = Nothing
End Sub

1 Ответ

1 голос
/ 07 января 2020
' VBA
Private Sub RunBatShell(ByVal strPath As String)
    Dim dProcessId As Double

    BAT_FILE = strPath + "vuln.bat"

    dProcessId = Shell("cmd.exe /c;" & " " & BAT_FILE & " " & strPath, vbNormalFocus)

    If dProcessId = 0 Then
        MsgBox "Failed"
    End If

    ' MsgBox "Done"
End Sub



@echo off
REM Vuln.bat
REM 実行環境を引数でもらう
echo 引数: %1

REM echo > cd %1
cd %1

set PARAM=C:\Windows\Sysnative\wsl.exe ./vuln.sh
REM echo %PARAM%
cmd /c %PARAM%

REM echo Done
REM pause
...