名前付きパイプ
管理者権限で起動する必要があるというのは、単純にアクセス権の問題ではないでしょうか。 VMware や VirtualBox では起きないので、Hyper-V の設定もしくは仕様だと思います。
アクセス権の問題ならば Tera Term 側ではどうしようも無いと思います。
Tera Term 本体でやるべきかは判りませんが、GetTokenInformation() で TokenElevation を確認すれば出来そうです。
試験的実装: https://osdn.jp/users/doda/pf/test_ttx/scm/blobs/master/TTXCheckAdminPriv/TTXCheckAdminPriv.c
これも VMware や VirtualBox では起きないですね。 自分の使用環境では起きないので困ってはいませんが、シリアルポートの再接続機能と同じような仕組みが実現できたら便利だと思います。
doda への返信
== アクセスに管理者権限が必要 管理者権限で起動する必要があるというのは、単純にアクセス権の問題ではないでしょうか。 VMware や VirtualBox では起きないので、Hyper-V の設定もしくは仕様だと思います。
Hyper-Vの仕様のようです。 Hyper-VのCOMポートに、名前付きパイプを設定するために、PowerShellのSet-VMComPortコマンドを 使うのですが、このコマンドが管理者権限でしか動かないのです。
cf. https://blogs.msdn.microsoft.com/jpwdkblog/2014/02/27/hyper-v-guest-os-windbg/ https://msmania.wordpress.com/tag/grub/
== 再起動時に切断される これも VMware や VirtualBox では起きないですね。 自分の使用環境では起きないので困ってはいませんが、シリアルポートの再接続機能と同じような仕組みが実現できたら便利だと思います。
シリアルポートの場合は、シリアルケーブルが抜けたかどうかで判断できていましたが、 名前付きパイプの場合は「削除された」かどうかで判断するのかと思っていますが、 実際のそのような判断ができるかどうかってところですかね。
開けなかった理由が判らないのは確かにつらいですね。
とりあえず
辺りは専用のエラーメッセージを設ける方がよさそうです。
r6893 で開けなかった理由を表示するようにしました。
開くのに管理者権限がいるパイプを使う必要が出来て思ったのですが、 権限の問題でアクセス拒否された場合は、(可能ならば)権限を昇格して再試行出来ると便利そうです。
AdjustTokenPrivileges() とかで出来る? 必要な権限は?
Hyper-VのCOMポートに、Tera Termから名前付きパイプで接続する場合、不便に感じたことを以下に示します。今後の改善。
Hyper-Vの名前付きパイプにアクセスするためには、Tera Termを管理者権限で起動する必要があり、管理者権限ではない場合、名前付きパイプを開けないが、エラーの原因が分からない。r6893で対応