Аргументы VB.NET Process.Start не передаются в CMD

Это мой первый пост здесь, поэтому, пожалуйста, полегче, я также хорошо знаю VB.

Я делаю приложение, которое должно создавать точку доступа WiFi одним нажатием кнопки, чтобы я мог использовать свой ноутбук в качестве расширителя WiFi для своих устройств, таких как мой телефон, однако я делаю это с помощью командной строки. Это мой код до сих пор:

      Private Sub Form1_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
    Dim startInfo As New ProcessStartInfo("cmd")
    startInfo.WindowStyle = ProcessWindowStyle.Minimized
    startInfo.Arguments = "netsh show wlan drivers"
    Process.Start(startInfo)
End Sub

Проблема в том, что он не передает аргументы. Cmd запускается нормально, но ничего не получает.

Что я пробовал: 1. Использование process.start и ProcessStartInfo 2. Изменить рабочий каталог 3. Отправить аргументы после запуска cmd (после process.start) 4. Изменить целевую структуру 5. Запустить в x86 и x64 6. Запустить от имени администратора 7 .Пробуем другие команды, например "color 2f". Не удалось.

Любая помощь будет принята с благодарностью!

Изменить: даже аргумент WindowStyle не был передан.


person OnlyTwentyCharacters    schedule 04.03.2015    source источник
comment
Неважно проблема решена. Если кто-то захочет закрыть вопрос (не знаю как, я здесь новичок..) буду признателен.   -  person OnlyTwentyCharacters    schedule 05.03.2015
comment
Разве вы не можете просто вызвать netsh напрямую, не выполняя сначала cmd.exe?   -  person Chris Dunaway    schedule 05.03.2015


Ответы (1)


Вам нужно добавить

startInfo.Arguments = "/C netsh wlan show drivers"

без этого флага (/C) команда CMD немедленно завершает работу и ничего не выполняется

В любом случае ваша команда неверна. Правильный синтаксис

netsh wlan show drivers

Вы можете изменить свой код, чтобы захватить вывод команды таким образом

Dim startInfo As New ProcessStartInfo("cmd")
startInfo.WindowStyle = ProcessWindowStyle.Minimized
startInfo.Arguments = "/C netsh wlan show drivers"
startInfo.RedirectStandardOutput = true
startInfo.UseShellExecute = false
startInfo.CreateNoWindow = true
Dim p = Process.Start(startInfo)
Dim result = p.StandardOutput.ReadToEnd()
p.Close()
person Steve    schedule 04.03.2015
comment
Ура, это меня куда-то привело. Он никогда не закрывался сразу без /K, но с добавлением /K теперь я получаю ошибку show wlan driver Edit: включено изображение полученной ошибки - person OnlyTwentyCharacters; 05.03.2015