前提・実現したいこと
C#で作成したコンソールアプリケーションから、アプリケーションを実行しているユーザーをログオフさせたい。
発生している問題・エラーメッセージ
実行しているアプリの標準出力です。(コマンドプロンプトの出力をリダイレクトしています。)
プロンプト起動時のメッセージ等一部省略しています。
testApp
1C:\Users...\App>echo "ログオフ" 2"ログオフ" 3 4C:\Users...\App>logoff 5'logoff'は、内部コマンドまたは外部コマンド、 6操作可能なプログラムまたはバッチ ファイルとして認識されていません。
該当のソースコード
C#
1using System; 2using System.Diagnostics; 3 4namespace testApp{ 5 class Program 6 { 7 static void main(string[] args){ 8 ProcessStartInfo procInfo = new ProcessStartInfo 9 { 10 Verb = "RunAs", 11 UseShellExecute = false, 12 FileName = "cmd.exe", 13 RedirectStandardInput = true, 14 }; 15 Process proc = Process.Start(procInfo); 16 proc.StandardInput.WriteLine("echo \"ログオフ\""); 17 proc.StandardInput.WriteLine("logoff"); 18 } 19 } 20}
試したこと
- cmd.exeをアプリを介さず通常起動(cmd.exeを実行)し、"logoff"コマンドを実行
→ ログオフされた。
- 管理者権限がないのが問題?
→ プログラム内と、通常起動させたcmd.exeで"whoami"コマンドを実行したところ、同一の出力が得られた。実行者が同じということは管理者権限は無関係?
補足情報(FW/ツールのバージョンなど)
Windows10
VisualStudio 2015
logoff.exeのフルパス指定したらどうなりますか?
結果は、エラーメッセージに記載されているものと同じメッセージでした(logoffの部分がフルパスに変わったという違いはあります)。
logoffをC:\\Windows\\System32\\logoff.exeに変更して実行を行いました。
念のため、.exeを付けずに実行しましたがそちらも同じ結果です。
processで直接logoff.exeを指定すればいいのでは?と思い試しましたがこちらはExceptionでファイルが見つかりませんでした。
×RedirectStandartInput
〇RedirectStandardInput
思いっきりタイポしてましたね、、修正いたしました。
回答1件
あなたの回答
tips
プレビュー