方法一:使用系統預設瀏覽器
System.Diagnostics.Process.Start("https://www.example.com");
- 自動呼叫系統關聯的 HTTP/HTTPS 協定處理程式 (預設瀏覽器)
- 最簡單、最通用、跨平台相容性最佳
- 支援任何有效 URI (mailto:, ftp:, file: 等)
方法二:指定瀏覽器執行檔與參數
// 完整路徑寫法 (需逸出反斜線或使用 @ 字串)
System.Diagnostics.Process.Start(
@"C:\Program Files\Internet Explorer\iexplore.exe",
"https://www.example.com"
);
// 或使用 StartInfo 物件 (功能更完整)
var psi = new System.Diagnostics.ProcessStartInfo
{
FileName = @"C:\Program Files\Google\Chrome\Application\chrome.exe",
Arguments = "https://www.example.com --incognito",
UseShellExecute = true // 預設 true,允許 URL 直接開啟
};
System.Diagnostics.Process.Start(psi);
進階用法:ProcessStartInfo 完整控制
var psi = new ProcessStartInfo
{
FileName = "https://www.example.com", // 直接用 URL,UseShellExecute=true 時自動用預設瀏覽器
// FileName = "chrome.exe", // 或指定瀏覽器 (需在 PATH 中)
Arguments = "--new-window --incognito", // 瀏覽器專用參數
UseShellExecute = true, // 必須為 true 才能直接開啟 URL
WindowStyle = ProcessWindowStyle.Normal,
Verb = "open" // 動作:open/print/edit 等
};
Process.Start(psi);
跨平台注意事項 (.NET Core / .NET 5+)
| 平台 | UseShellExecute=true | UseShellExecute=false |
| Windows | 支援 URL 直接開啟 | 需指定具體執行檔 |
| Linux | 透過 xdg-open 開啟 | 需指定瀏覽器執行檔 (如 firefox) |
| macOS | 透過 open 指令開啟 | 需指定瀏覽器執行檔 (如 open -a Safari) |
最佳實務建議
- 優先使用方法一:
Process.Start("url"),讓使用者自行選擇瀏覽器
- 僅在業務需求強制指定瀏覽器時使用方法二 (如企業內部系統僅相容 IE/Edge)
- 路徑寫死極易失效 (使用者可能安裝在非預設位置、攜帶版瀏覽器、更新後路徑變更)
- 現代 .NET 建議使用
ProcessStartInfo 物件而非靜態多載,功能更完整
- 異步啟動:
await Process.StartAsync(psi) (.NET 6+)
常見錯誤排查
| 錯誤 | 原因 | 解決 |
| Win32Exception: The system cannot find the file specified | 執行檔路徑錯誤或不在 PATH 中 | 使用方法一、或動態查詢註冊表取得瀏覽器路徑 |
| InvalidOperationException: UseShellExecute must be true | FileName 為 URL 但 UseShellExecute=false | 設定 UseShellExecute=true |
| 無反應/不開啟 | 瀏覽器已開啟且鎖定單一實例 | 加入 --new-window 參數或接受此行為 |