2013年1月11日金曜日

[windows][cygwin] windows7 上で ping が "ping: socket: Operation not permitted" になる問題の対処

windows7 上に cygwin の ping をインストールして実行すると、以下のようなエラーが出ます。

% ping hogehost
ping: socket: Operation not permitted

試行錯誤の末、ping.exeを右クリックしてプロパティダイアログを表示し、「互換性」タブの「管理者としてこのプログラムを実行する」にチェックを入れることで、pingが正常動作するようになりました。





google先生に伺ったところ、どうもファイアウォールの設定で管理者にしかICMPv4の送受信権限が与えられていないようです。と、歯切れが悪いのは、ここに載っていた情報に従って設定したにもかかわらず、状況が改善しなかったためです。

# もし正しいよりスマートな設定方法をご存じの方、是非お知らせください。m(_ _)m


(以下、2013/05/16追記)
ping.exe自体に管理者権限を設定してもエラーになる環境が多く悩んでいたのですが、cygwinのMLにこのような過去ログを発見しました。
これによると、ping.exeを起動するターミナル(mintty)側に予め管理者権限を設定しておく必要がある、ということです。

私はXを使っているので試しにrun.exeに管理者権限を与えておくと、X上で起動した任意のターミナルがその権限を引き継いでくれて、ping.exeも正しく動作することが分かりました!


この設定をしておくとping.exe自体には管理者権限を設定する必要はありません。



(以下、2016/09/29追記)
ショートカットの詳細設定で「管理者権限で実行」にチェックを入れておくと、管理者権限でXWinを起動できます。ですが、起動時に毎回「ユーザーアカウント制御」ダイアログが表示されて「この不明な発行元からのアプリがデバイスに変更を加えることを許可しますか?」、[はい」ボタンを押す必要があり、非常に面倒・・・。
このダイアログをスキップできないかと思ってネット上の情報を漁ってみたところ、UAC全体を無効にすることなく、XWinの起動時だけダイアログ表示をスキップするうってつけの方法が見つかりました。
タスクスケジューラにタスクを設定することでダイアログ表示を回避できます。以下のサイトを参考に設定してください。


(2016/10/16追記)
上記タスクスケジューラからアプリを起動すると、プロセスの優先度が「通常以下」となり、動作が遅くなる問題がありました。以下の手順で「通常」優先度でタスクを起動するとよいです。



0 件のコメント:

コメントを投稿