I have a WinForms application targeting .NET 2.0. We have a report that one of our buttons doesn't work, all it does is open a webpage in their default browser. Looking through the logs I can see Process.Start()
fails because it cannot find the file. The problem is that we pass a string url into the Start()
method, so I cannot understand why it generates this message.
Here is the exception from the logs:
System.ComponentModel.Win32Exception: The system cannot find the file specified
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
at *namespace*.Website.LaunchWebsiteAsync(String url)
The system cannot find the file specified
at System.Diagnostics.Process.StartWithShellExecuteEx(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start()
at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
at System.Diagnostics.Process.Start(String fileName)
at *namespace*.Website.LaunchWebsiteAsync(String url)
And for completeness:
Process.Start(url);
Where url has a value of something like: "http://www.example.com"
After searching online I came across this blog with the same issue. The difference is this was specific to Windows 8. He discovered some browsers are not registering themselves correctly when being installed. This has since been fixed as the browsers released updates. (Blog dated shortly after Windows 8 release).
I could understand it if our customer didn't have a browser installed. But this is not the case. I've also loaded a Windows XP VM, and tried removing all associations for files types of .html
, URL: HyperText Transfer Protocol
, etc, from the Folder Options window under the File Types tab. But I cannot reproduce the problem.
Does anyone have any ideas why this might fail, and / or how I can reproduce the error?
As a side note, our customer is running Windows XP.
http://www.example.com
is being passed in on the client's machine and notwww.example.com
? Perhaps you could add logging code in a try-catch block that logged the attemped URL. – Enzootichttp://website.net/variousparameters
. I can confirm the site is not down, or anything like that. It's one of our users that's reported it, and I am unable to reproduce it. – Pisciwww
. add/
at the end. define your url like this:string url = @"http://www.website...";
– Colorist