回答:
テキストフィールドに次を入力します。
%windir%\System32\tscon.exe 0 /dest:console
(下記参照)
これが機能しない場合はtscon.exe 0 /dest...
、手順2の数字のゼロ()を数字の1に変更してみてください。機能しない場合は、リモートデスクトップが解放されるまで増分し続けます。
または、スタートメニューでシェルを開き、実行しますcmd
。と入力qwinsta
Enterし、アクティブ状態のセッションのIDを探します(>
セッション名の先頭に文字があります)。これは、手順2で使用する必要がある番号です。
コンソールデスクトップを復元する場合は、ショートカットをダブルクリックして、管理者アクセスを許可します。
これは、GNUツールへの依存を回避するバージョンです。Windowsに同梱されているfindstrを使用します。
for /f %%i in ('qwinsta ^| findstr /C:">rdp-tcp#"') do set RDP_SESSION=%%i
:: Strip the >
set RDP_SESSION=%RDP_SESSION:>=%
tscon %RDP_SESSION% /dest:console
%windir%\system32\cmd.exe /c "for /F "tokens=1 delims=^> " %i in ('""%windir%\system32\qwinsta.exe" | "%windir%\system32\find.exe" /I "^>rdp-tcp#""') do "%windir%\system32\tscon.exe" %i /dest:console"
です。>
環境変数の置換を追加のfor
構文解析トリックに置き換え、cmd
オプション(ショートカット用)を追加します。適切なアイコン(私はからログオフアイコンを使用しました)と組み合わせるとShell32.dll
、これに似たものになります。
glenviewjeffの答えはそこまで来ましたが、セッションIDは常に1とは限りません。このようにリスニングセッションまたはコンソールセッションを切断しようとすると、「エラー7045」が表示されます。セッションIDが存在しないため、SessionIDが見つかりませんというエラーが発生しました。
現在のセッションを引き出すために、小さなバッチファイルを作成しました。Windows XPでこれを行ったので、現在のIDを把握するためにクエリセッションではなくqwinstaを使用する必要がありました。このバッチファイルはUNIXコマンドラインユーティリティを使用します。WindowsではGnu(https://github.com/bmatzelle/gow/downloads)を使用してこれらにアクセスします。「>」記号を検索して現在のセッションを引き出し、コンソールセッションに再割り当てします。
for /f %%i in ('qwinsta ^| grep "^>" ^| awk "{print $4}"') do set VAR=%%i
tscon %var% /dest:console
Fujitsu IX500スキャナーに接続されているマシンでこれが必要でした。スキャナーは、画面がWindowsのユーザー名/サインオン選択画面にない場合にのみスキャンします。マシンは画面なしで実行されるため、rdp経由で接続できるようにしたいのですが、手動でログインするか再起動するまでハードウェアスキャンボタンを使用できませんでした。上記のバッチファイルはこの問題を解決します。