DOS シェルだとこういうのは無理なのかな?というよりそれらしき情報が見当たらなかったので PowerShell でやることに。
route print してその出力を受け取って、指定のインタフェースの行を抜き出して番号を取得。ここまではいい。
それを使って route add するところで問題発生。管理者権限を付与した DOS 窓じゃないとルートが追加されない。
つまり、PowerShell から発行する DOS コマンドに管理者権限を付与しなければならない。
PowerShell シェル自体を管理者権限で起動し、そこからスクリプトを実行すればいける(と思う、試してはいない)。
けど、そんな面倒なことはしたくなくて、クリック操作だけでやりたい。
いろいろ調べたところ、海外のサイトにそれらしきものを発見。
やり方は「管理者権限でプロセスを実行する」、まんまだけどまさにこの通り。
要は、.NET Framework の Process クラスを使えばいい、と。
ほうほう、こういうやり方もあるのかー、というちょっと目から鱗でした。
重要なポイントだけ抜き出すと以下のような感じ。
$startinfo = new-object System.Diagnostics.ProcessStartInfo $startinfo.FileName = $exe $startinfo.Arguments = $arguments $startinfo.verb = "RunAs" $process = [System.Diagnostics.Process]::Start($startinfo)ただ、どうしても管理者権限で実行しますけどいいですか?的なダイアログは出ちゃう、仕方ないね。
0 件のコメント:
コメントを投稿