パソコン関連の書籍等を読んで試したりしながらアウトプットしまくります。

アウトプットしながら学ぶ

プログラミング

VB.NETで「query session」コマンドの出力を取得・活用する方法|リモートセッション制御の自動化に

更新日:

Blenderがリモートデスクトップで起動しない?OpenGLエラーの原因と解決策を徹底解説で、コマンドプロンプトで「query session」コマンドを実行することにより、セッションIDを確認しました。
この処理をバッチファイルで自動化したかったのですが、できなかったので、VB.netでやってみることにしました。

 

なぜVB.NETで「query session」を使いたいのか?

Blenderなど、一部のアプリケーションはRDP接続中には正常に起動できないことがあります。これを回避するには、物理コンソールセッションへ切り替える必要があり、そのためには現在のセッションIDを取得する必要があります。

手動でコマンドプロンプトから query session を実行するのは煩雑です。これを自動化することで、Blender起動用ツールなども作成可能になります。

VB.NETでコマンドを実行するポイント

標準的な方法でプロセスを起動しようとしてもうまくいかないことがあります。特に、セキュリティ上の理由でユーザー名とパスワードの指定が必要となる場合が多いです。

VB.netでコマンドプロンプトを操作するだけだと思ったのですが、うまくいきませんでした。
試行錯誤した結果、ユーザー名とパスワードを設定して実行することでうまくいくことがわかりました。

VB.netで「query session」の結果を取得するコード

VB.NETからコマンドを実行するには、System.Diagnostics.ProcessStartInfo を使用します。
ただし、query session は管理者権限が必要であり、通常の実行方法ではアクセス拒否エラーが出る場合があります。

以下のコードでは、ユーザー名とパスワードを指定し、セキュアな方法で実行する仕組みになっています。

得られた結果を処理すれば、Blenderをリモートデスクトップで起動するツールが作成できます。

注意点とセキュリティについて

  • パスワードはSecureStringで保持しているとはいえ、ハードコードはセキュリティリスクがあるため、環境変数や外部ファイルから安全に取得する工夫が必要です。

  • プロセス実行には十分な権限が必要です。アプリケーションを「管理者として実行」するよう設定してください。


実行環境に関する補足

この処理はWindows OSに依存します。特に、ドメイン環境下やWindows Serverを利用している場合、セッション名や動作に若干の違いが出る場合があります。実環境での検証をおすすめします。


今後の拡張案

  • セッションIDの自動抽出とtsconコマンド実行を組み合わせることで、完全自動化されたBlender起動ツールを構築可能。

  • 出力結果をリストボックスなどに表示し、ユーザーが選択して操作できるUIの作成も視野に入ります。

参考:tsconコマンドとは?

tscon(Terminal Services CONnect)は、Windowsのセッションを制御するためのコマンドラインツールです。特に、リモートデスクトップ(RDP)接続中のセッションを、物理コンソールセッション(実機画面)へ切り替えるために使用されます。

🔹 使用目的

RDP環境では、仮想ディスプレイアダプターが使われるため、OpenGLなどのハードウェアアクセラレーションが正しく機能しないケースがあります。
このような場合、tsconでセッションをローカル側に切り替えることで、制限を回避できることがあります。

🔹 基本的な使い方

tscon <セッションID> /dest:console

例:セッションIDが2の場合

tscon 2 /dest:console

このコマンドを実行すると、現在のリモートセッションは切断され、アプリケーションはコンソールセッション上でそのまま動き続けます。

🔹 注意点

  • tsconを使用するには管理者権限が必要です。

  • セッションIDは query session コマンドで確認できます。

  • 実行中のセッションが切り替えられるため、リモート接続は一度切断されます。

🔹 活用例

  • Blenderや他の3DCGツールがRDP環境で起動できないとき

  • スクリプトやツールからセッション制御を自動化したいとき

  • 仮想セッションの制限を回避して高負荷な処理を行いたいとき


このように、VB.NETで取得したセッションIDとtsconコマンドを組み合わせることで、より高度な自動化ツールの構築が可能になります。今後の応用やツール開発のヒントとしてご活用ください。

 







-プログラミング
-, , , ,

Copyright© アウトプットしながら学ぶ , 2025 AllRights Reserved Powered by AFFINGER4.