|
http://farm3.static.flickr.com/2289/1558887821_c94224bce6.jpg O salto decisivo de duas vidas on Flickr - Photo Sharing! 最終的なソースコードは以下のようになりました。 using System;
using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.IO; namespace HostsSwitcher { public partial class HostsSwitcher : Form { const string ETC_HOSTS = "C:\\WINDOWS\\system32\\drivers\\etc\\hosts"; const string ETC_HOSTS_OFFICE = "C:\\WINDOWS\\system32\\drivers\\etc\\hosts_office.txt"; const string ETC_HOSTS_HOME = "C:\\WINDOWS\\system32\\drivers\\etc\\hosts_home.txt"; const string MESSAGE_COPY_OK = "コピーしました!"; const string MESSAGE_SOMETHINGWRONG = "何かよからぬことが起きました"; public HostsSwitcher() { InitializeComponent(); } private void buttonOffice_Click(object sender, EventArgs e) { try { if (File.Exists(ETC_HOSTS)) { File.Delete(ETC_HOSTS); } File.Copy(ETC_HOSTS_OFFICE, ETC_HOSTS); MessageBox.Show(MESSAGE_COPY_OK); } catch (FileNotFoundException ex) { MessageBox.Show(ex.Message); } catch (Exception ex) { MessageBox.Show(MESSAGE_SOMETHINGWRONG); } } private void other_Click(object sender, EventArgs e) { try { if (File.Exists(ETC_HOSTS)) { File.Delete(ETC_HOSTS); } File.Copy(ETC_HOSTS_HOME, ETC_HOSTS); MessageBox.Show(MESSAGE_COPY_OK); } catch (FileNotFoundException ex) { MessageBox.Show(ex.Message); } catch (Exception ex) { MessageBox.Show(MESSAGE_SOMETHINGWRONG); } } } } File.Copy()はファイルを上書きしてくれないので、先にDeleteしています。Deleteはファイルがなくても例外を出さない、とあるのでExistsは不要か。 catchでExceptionを加えました。これで何か予期せぬ例外が発生しても一応エラーメッセージを出すことができます。これがないと突然落ちるアプリになってしまいます。 exeの配布を目的としたアプリではないので、これで終わりにしてしまいますがやるとしたら ・様々な環境での動作確認(hostsのパスの違い、.NETのバージョン etc) ・元々あったhostsファイルのバックアップ 辺りは必要かと思います。 hostsファイルを自動で編集するアプリが他にあるか未確認なので、上書きして何かのサイトにアクセスできなくなることがないよう、お気をつけください。 hosts_office.txtは「オフィス」、hosts_home.txtは「その他」ボタンを押したときにコピーされるhostsファイルです。これらをあらかじめ用意しておいて、必要になったときにHostsSwitcherを起動してボタンを押せば切り替わります。 Firefoxはhostsを反映させるには再起動が必要なようです。他のアプリも同様かもしれません。 VisualStudio2008の場合、マイドキュメントの下の Visual Studio 2008\Projects\HostsSwitcher\HostsSwitcher\bin\Release にHostsSwitcher.exeが生成されていました。 起動しやすいようにC:\WINDOWSにコピーしました。これでWindowsキー+Rで「ファイル名を指定して実行」でhostsswitcherと打てば起動できます。 これでWindowsライフがちょっと便利になったような気がします。進化したVisualStudioの威力もちょこっとですが堪能できました。今回の.NETなC#なら無料でできるのでぜひWindowsアプリ開発も試してみてください。 |

- >
- コンピュータとインターネット
- >
- コンピュータ
- >
- ソフトウェア





