質問: Process.Start(procInfo); proc.StandardInput.WriteLine("echo \"ログオフ\""); proc.StandardInput.WriteLine("logoff"); } } } ``` ### 試したこと * cmd.exeをアプリを介さず通常起動(cmd.exeを実行)し、"logoff"コマンドを実行 → ログオフされた。 * 管理者権限がないのが問題? → プログラム内と、通常起動させたcmd.exeで"whoami"コマンドを実行したところ、同一の出力が得られた。実行者が同じということは管理者権限は無関係? ### 補足情報(FW/ツールのバージョンなど) Windows10 VisualStudio 2015
回答: 試しに提示のソースコードをビルドして実行してみましたが、こちらの環境では正常にログオフできました。(.NET Core 3.1 コンソールアプリ) ExitWindowsEx API, WMI等でも可能なようですが、こちらではいかがでしょう。 コンピュータの電源切る、システムのシャットダウン、再起動、ログオフする (追記) 32bit版cmdからは、Sysnativeエイリアスを経由する事でシステム本来(のアーキテクチャ)のディレクトリにアクセス可能なようです。 バッチファイルで32bitプロセスから64bitプロセスを起動する x86,AnyCPU(32bit優先)ビルドの場合、このようにアクセスすればいけそうです。 ``` proc.StandardInput.WriteLine("%windir%/Sysnative/logoff"); ```