<p>I'm trying to provide a link to my company's website from a Windows Form.  I want to be well behaved and launch using the user's preferred browser.</p>

<p>What is the best way to open a URL in the user's default browser from a Windows Forms application?</p>

[{'answer_id': 58032, 'author': 'Aaron Wagner', 'author_id': 3909, 'author_profile': 'https://Stackoverflow.com/users/3909', 'pm_score': 5, 'selected': False, 'text': '<pre><code>using System.Diagnostics;\n\nProcess.Start("http://www.google.com/");\n</code></pre>\n\n<p>This approach has worked for me, but I could be missing something important.</p>\n'}, {'answer_id': 58033, 'author': 'Blorgbeard', 'author_id': 369, 'author_profile': 'https://Stackoverflow.com/users/369', 'pm_score': 8, 'selected': True, 'text': '<p>This <a href="http://support.microsoft.com/kb/320478" rel="noreferrer">article</a> will walk you through it.</p>\n\n<p>Short answer:</p>\n\n<pre><code>ProcessStartInfo sInfo = new ProcessStartInfo("http://mysite.com/");  \nProcess.Start(sInfo);\n</code></pre>\n'}, {'answer_id': 1500956, 'author': 'Sumrak', 'author_id': 19124, 'author_profile': 'https://Stackoverflow.com/users/19124', 'pm_score': 3, 'selected': False, 'text': '<p>I like approach described <a href="http://code.logos.com/blog/2008/01/using_processstart_to_link_to.html" rel="nofollow noreferrer">here</a>. It takes into account possible exceptions and delays when launching the browser.</p>\n\n<p>For best practice make sure you don\'t just ignore the exception, but catch it and perform an appropriate action (for example notify user that opening the browser to navigate him to the url failed).</p>\n'}, {'answer_id': 12674404, 'author': 'ammrin', 'author_id': 1711898, 'author_profile': 'https://Stackoverflow.com/users/1711898', 'pm_score': -1, 'selected': False, 'text': '<p>The above approach is perfect, I would like to recommend this approach to where you can pass your parameters.</p>\n\n<pre><code>Process mypr;\nmypr = Process.Start("iexplore.exe", "pass the name of website");\n</code></pre>\n'}, {'answer_id': 18276042, 'author': 'Rogala', 'author_id': 2025711, 'author_profile': 'https://Stackoverflow.com/users/2025711', 'pm_score': 4, 'selected': False, 'text': '<p>Here is the best of both worlds:</p>\n\n<pre><code>Dim sInfo As New ProcessStartInfo("http://www.mysite.com")\n\nTry\n     Process.Start(sInfo)\nCatch ex As Exception\n     Process.Start("iexplore.exe", sInfo.FileName)\nEnd Try\n</code></pre>\n\n<p>I found that the answer provided by Blorgbeard will fail when a desktop application is run on a Windows 8 device.  To Camillo\'s point, you should attempt to open this with the user\'s default browser application, but if the browswer application is not assigned, an unhandled exception will be thrown.  </p>\n\n<p>I am posting this as the answer since it handles the exception while still attempting to open the link in the default browser.</p>\n'}, {'answer_id': 62534375, 'author': 'Daniel', 'author_id': 13761054, 'author_profile': 'https://Stackoverflow.com/users/13761054', 'pm_score': 4, 'selected': False, 'text': '<p>For those getting a &quot;Win32Exception: The System cannot find the file specified&quot;</p>\n<p>This should do the work:</p>\n<pre><code>ProcessStartInfo psInfo = new ProcessStartInfo\n{\n   FileName = &quot;https://www.google.com&quot;,\n   UseShellExecute = true\n};\nProcess.Start(psInfo);\n</code></pre>\n<p>UseShellExecute is descriped further <a href="https://learn.microsoft.com/en-us/dotnet/api/system.diagnostics.processstartinfo.useshellexecute?view=netcore-3.1" rel="noreferrer">here</a></p>\n<p>For me the issue was due to the .NET runtime as descriped <a href="https://github.com/dotnet/runtime/issues/17938" rel="noreferrer">here</a></p>\n'}]
['https://Stackoverflow.com/questions/58024', 'https://Stackoverflow.com', 'https://Stackoverflow.com/users/148/']