LoginSignup
2
2

More than 5 years have passed since last update.

管理者権限で外部プロセスを起動する(OSX)

Posted at

Problem

外部プロセスを叩いてシステムに関わる設定を変更する,というニーズは少なからず発生します。
環境によってはvisudoでパスワード無しtty無しを許可すれば事は足りますが,そのような設定が困難な場合に。

Solution

A.sudoers設定が可能な環境の場合

Mono on Linuxなどではこちらで。

sudo.cs
var psi = new ProcessStartInfo();
psi.FileName = "/usr/bin/sudo"; // 環境による
psi.Arguments = "(実行したいコマンドと引数)";
var p = Process.Start(psi);
p.WaitForExit();

B.どこで実行されるかわからない場合

OSXは基本的にこちらで。
AppleScript を叩いて実行していきます。
事前に実行したいコマンドをシェルスクリプトにまとめておくといいです。

withadmin.cs
var psi = new ProcessStartInfo();
psi.FileName = "/usr/bin/osascript";
psi.Arguments = "-e \"do shell script \\\"(path to shellscript)\\\" with administrator privileges\"";
var p = Process.Start(psi);
p.WaitForExit();

実行すると管理者のパスワード入力を求めるプロンプトをOSが表示してくれます。

Conclusion

AppleScript, もしくはシェルスクリプトで実行したい処理をまとめておくと,例外時のハンドリングもしやすいかと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2