Visual C# を使用して既定のインターネット ブラウザーをプログラムで起動する

この記事では、Visual C# を使用して既定のインターネット ブラウザーを起動する方法について説明します。

元の製品バージョン: Visual Studio
元の KB 番号: 305703

注:

開く URL、FTP、またはファイルを指定する

URL、ファイル、またはファイル転送プロトコル (FTP) アドレスを指定できます。 これらの 3 つの割り当ては、すべて有効です。

string target= "http://www.microsoft.com";
string target = "ftp://ftp.microsoft.com";
string target = "C:\\Program Files\\Microsoft Visual Studio\\INSTALL.HTM";

Process クラスの Start メソッドを使用してブラウザーを起動する

クラスには Process 静的 Start メソッドが含まれています。 これは静的メソッドであるため、クラスのProcessインスタンスを持たずに を呼び出Startすことができます。

System.Diagnostics.Process.Start(target);

クラスの Process 詳細については、「 プロセス クラス」を参照してください。

例外処理を提供する

メソッドを呼び出すとき に既定 UseShellExecute のプロパティStart 利用するため、レジストリに対して明示的にクエリを実行して、どのブラウザーが既定であるかを判断する必要はありません。 ただし、ブラウザーがインストールされていないコンピューターでこの方法を使用すると、例外が発生します。 適切なアクションを実行できるように、この例外をキャッチする必要があります。

この例では、必要なレジストリ キーが見つからないときに生成され、ブラウザーがインストールされていないことを示すエラーを明示的にトラップします。 さらに、発生する可能性があるその他のエラーに対して、一般的な例外ハンドラーが提供されます。 ブロックは try...catch 、完全なコード 一覧で示されています。

完全なコード サンプル

string target= "http://www.microsoft.com";
//Use no more than one assignment when you test this code.
//string target = "ftp://ftp.microsoft.com";
//string target = "C:\\Program Files\\Microsoft Visual Studio\\INSTALL.HTM";
try
{
    System.Diagnostics.Process.Start(target);
}
catch (System.ComponentModel.Win32Exception noBrowser)
{
    if (noBrowser.ErrorCode==-2147467259)
    MessageBox.Show(noBrowser.Message);
}
catch (System.Exception other)
{
    MessageBox.Show(other.Message);
}

トラブルシューティング

このコードは、レジストリの HKEY_CLASSES_ROOT (HKCR) Hive 内のアプリケーション ファイルの種類の関連付けに大きく依存します。 レジストリが破損している場合、予期しない結果や例外が発生する可能性があります。 さらに、ファイルの種類と拡張子は、ブラウザー以外のアプリケーションに関連付けられている場合があります。 たとえば、HTM または HTML ファイルは、ブラウザーではなく Web 開発ソフトウェアに関連付けられている場合があります。