環境
Windows 10 Pro 64bit
Visual Studio 2019
言語 C#
やりたいこと
管理者権限を持たない Windows Form アプリから、
IPアドレスを変更する実行ファイル(管理者権限が必要)を実行し、
その標準出力を Windows Form アプリへリダイレクトする。
詳細
外部プログラムの標準出力をリダイレクトするプログラムとして、
以下の様なプログラムを作成しました。
C#
1static void Main() 2{ 3 string cmd = @"管理者権限が必要なプログラム"; 4 5 Process p = new Process(); 6 7 p.StartInfo.FileName = cmd; 8 p.StartInfo.CreateNoWindow = true; 9 p.StartInfo.UseShellExecute = false; 10 p.StartInfo.Arguments = @"コマンドライン引数"; 11 p.StartInfo.RedirectStandardOutput = true; 12 13 p.Start(); 14 string output = p.StandardOutput.ReadToEnd(); 15 16 output = output.Replace(@"\r\r\n", @"\n"); 17 Console.WriteLine(output); 18}
こちらのプログラムは問題なく動作しています。
しかし、外部プログラムを管理者権限で実行するためには UseShellExecute を true にする必要がありますが、
そうすると、標準入力をリダイレクトすることができません。
この点は仕様上どうすることもできない様で、
他の手段を探してみましたが、目ぼしいものが発見できませんでした。
知りたいこと
上述の手段以外で、やりたいことを実現できる方法。
その他
Windows Form アプリですが、
スタートアップに登録してタスクトレイに常駐させる様な用途で考えています。
つきまして、Windows Form アプリに管理者権限は付与しない方針です。
一応、Windows Form アプリに管理者権限を付与して、
タスクスケジューラからログオン時に起動する方法も考えましたが、
ユーザへの配布の際にタスクスケジューラへの登録用プログラムも必要になる工数を考慮すると、
あまりこちらの方法は気乗りせず、他に手段がないかと質問した次第です。
以上を踏まえまして、実現可能な手段や何らかのアイディアをお持ちの方がおりましたら、
ご回答頂けますと幸甚です。
回答1件
あなたの回答
tips
プレビュー