Назад | Перейти на главную страницу

Запустить / WAIT RDP FILE в Windows 8

Я не уверен, стоит ли размещать это здесь или в StackOverflow.

Мне нужен BAT, который открывает файл подключения RDP, а затем, когда соединение закрывается, выходит из системы.

start /WAIT "ConnectionFile.rdp"
logoff

Но выход из системы происходит мгновенно, не дожидаясь выхода. Я также пробую использовать C # и Process.WaitforExit ().

Что вы должны сделать? Я думаю, что это проблема с mstsc.exe, когда параметром является файл RDP.

Обновить: Я тестировал, и это хорошо работает в Windows 7, но в Windows 8 и на Windows 7 Thin PC это не работает.

Обновить Используя powershell, я немного продвинулся. Моя летучая мышь выглядит так, запустите процесс в Powershell, он работает.

powershell -version 2.0 -Sta -ExecutionPolicy UnRestricted Start-Process -Wait -FilePath mstsc -ArgumentList ConnectionFile.rdp; logoff

Но если RDP является допустимым файлом, когда Windows запрашивает учетные данные, он терпит неудачу и продолжает следующий процесс. В демонстрационных целях я изменил выход из системы на calc.

Попробуй это:

START /WAIT !_MSTSC! !_FILE! !_CONSOLE!

где

  • ! _MSTSC! это путь к MSTSC.EXE
  • !_ФАЙЛ! - это путь к сохраненному файлу RDP, содержащий имя хоста, логин и пароль, возможно, имя файла для выполнения при соединении, бла-бла-бла
  • !_ПРИСТАВКА! устанавливается на "" (null) или "/ ADMIN", если необходимо

Это явно зависит от WAIT от MSTSC, а не только от «успешного открытия» вашего RDP-файла. Таким образом, он должен (!) Работать немного лучше.

И ... вот интересная оговорка из справочного текста START:

    If Command Extensions are enabled, external command invocation
    through the command line or the START command changes as follows:

    When executing an application that is a 32-bit GUI application, CMD.EXE
does not wait for the application to terminate before returning to
the command prompt.  This new behavior does NOT occur if executing
within a command script.

Итак ... здесь может потребоваться обернуть команду и параметры MSTSC в файл CONNECT-REMOTE.CMD и дождаться завершения THAT.

Для тех, кто нашел эту статью и борется с этой проблемой, вставьте следующее правило между командой mstsc.exe и выходом из системы:

powershell wait-process -name mstsc

При сочетании с этой статьей: https://www.experts-exchange.com/articles/10032/MSTSC-as-a-Shell.html mstsc.cmd содержит:

C:\Windows\System32\mstsc.exe RDPLocation
powershell wait-process -name mstsc
logoff