C#でブラウザを起動する方法|Process.Startの基本から応用まで解説

C#でアプリケーションを開発していると、「ユーザーをWebサイトへ誘導したい」「外部リンクを開きたい」といった場面がよくあります。そんなときに便利なのが、ブラウザを自動で起動し、指定のURLを開く方法です。この記事では、C#を使ってブラウザを起動する基本的な方法から、既定のブラウザではなく特定のブラウザを起動する方法、またクロスプラットフォーム対応まで、丁寧に解説します。初心者の方にもわかりやすくサンプルコードを交えてご紹介しますので、ぜひ参考にしてください。


C#でブラウザを起動する基本的な方法

C#でブラウザを起動する最も基本的な方法は、System.Diagnostics.Process.Startメソッドを使うことです。このメソッドを使えば、簡単にURLを指定してブラウザを開くことができます。

using System.Diagnostics;

class Program
{
static void Main()
{
Process.Start("https://www.example.com");
}
}

上記のコードを実行すると、既定のブラウザ(Chrome、Edgeなど)で指定されたURLが開かれます。
ただし、.NET Core以降の環境では、少し工夫が必要になります。


.NET Coreや.NET 5/6/7での注意点

.NET Frameworkでは単純にProcess.Start(url)で開けましたが、.NET Core以降ではセキュリティやクロスプラットフォーム対応のため、明示的にプロセス情報を指定する必要があります。

Windowsでのサンプルコード:

using System;
using System.Diagnostics;

class Program
{
static void Main()
{
var url = "https://www.example.com";
var psi = new ProcessStartInfo
{
FileName = url,
UseShellExecute = true
};
Process.Start(psi);
}
}

このように、UseShellExecutetrueに設定することで、Windowsのシェルを使って既定のブラウザを起動できます。


特定のブラウザを指定して起動する方法(ChromeやEdge)

既定のブラウザではなく、明示的にGoogle ChromeやMicrosoft Edgeを起動したい場合は、ブラウザの実行ファイルのパスを指定します。

Google Chromeを起動する例:

using System.Diagnostics;

class Program
{
static void Main()
{
string chromePath = @"C:\Program Files\Google\Chrome\Application\chrome.exe";
string url = "https://www.example.com";
Process.Start(chromePath, url);
}
}

Microsoft Edgeを起動する例:

Microsoft EdgeはChromiumベースに変わったため、msedge.exeを指定します。

using System.Diagnostics;

class Program
{
static void Main()
{
string edgePath = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
string url = "https://www.example.com";
Process.Start(edgePath, url);
}
}

パスが環境によって異なる可能性があるので、事前に存在チェックを入れるとより安全です。


クロスプラットフォームでのブラウザ起動(Linux/macOS対応)

.NET Core以降はWindowsだけでなく、LinuxやmacOSでも動作します。そのため、OSに応じた起動方法を切り替える必要があります。

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

class Program
{
static void Main()
{
string url = "https://www.example.com";

if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Process.Start(new ProcessStartInfo("cmd", $"/c start {url}") { CreateNoWindow = true });
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
{
Process.Start("xdg-open", url);
}
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
Process.Start("open", url);
}
else
{
Console.WriteLine("対応していないOSです。");
}
}
}

このようにすれば、各OSで正しくURLをブラウザで開くことができます。


ブラウザが起動しないときのトラブルシューティング

1. UseShellExecute = true を忘れている

.NET Coreでは既定値が false のため、UseShellExecute = true にしないと起動しません。

2. アプリがUWPや一部の制限下で動いている

一部の実行環境では Process.Start() 自体が制限されていることがあります。代替手段を検討する必要があります。

3. ブラウザのパスが間違っている

特定のブラウザを起動しようとする場合、実行ファイルの場所が正しいか確認してください。


応用:ボタンをクリックしてブラウザを起動する(Windowsフォーム)

C#でWindowsフォームアプリケーションを使って、ユーザー操作でブラウザを開くUIも作れます。

using System;
using System.Diagnostics;
using System.Windows.Forms;

public class BrowserForm : Form
{
private Button openBrowserButton;

public BrowserForm()
{
openBrowserButton = new Button
{
Text = "ブラウザを開く",
Width = 150,
Height = 40,
Top = 50,
Left = 50
};
openBrowserButton.Click += OpenBrowserButton_Click;
Controls.Add(openBrowserButton);
}

private void OpenBrowserButton_Click(object sender, EventArgs e)
{
var psi = new ProcessStartInfo
{
FileName = "https://www.example.com",
UseShellExecute = true
};
Process.Start(psi);
}

[STAThread]
public static void Main()
{
Application.Run(new BrowserForm());
}
}

このように、GUIアプリでも簡単にブラウザを起動できます。


まとめ

C#でブラウザを起動する方法はとてもシンプルですが、.NETのバージョンやOSによって注意点が異なります。以下のポイントを押さえておくと安心です。

  • .NET Frameworkでは Process.Start(url) だけでOK
  • .NET Core以降は UseShellExecute = true を明示的に設定
  • 特定のブラウザを起動したい場合は、ブラウザの実行ファイルパスを指定
  • クロスプラットフォーム対応には RuntimeInformation を使う
  • GUIアプリでも簡単に連携可能

ちょっとしたリンク機能をアプリに加えるだけでも、ユーザー体験は向上します。ぜひ本記事の内容を活かして、あなたのアプリケーションに役立ててください。

タイトルとURLをコピーしました