У меня есть URL-адрес, и я хочу запустить его в браузере по умолчанию. Я пробовал два метода:
Process.Start("http://qaru.site/");
... и тот, который подробно описан в этом другом вопросе, используя ShellExecute.
В обоих случаях я получаю сообщение об ошибке: Windows не может найти '/qaru.site/...'. Убедитесь, что вы набрали имя правильно, а затем повторите попытку.
Не следует пытаться открыть его как файл, хотя... из того, что я понимаю, он должен распознать его как URL-адрес и открыть его в браузере по умолчанию. Что мне не хватает?
Кстати: OS = Vista и .NET = 3.5
ИЗМЕНИТЬ
В соответствии с эта статья MS KB, поскольку Process.Start по умолчанию устанавливает UseShellExecute, он должен запустить браузер по умолчанию.
ИЗМЕНИТЬ
Вот что работает:
System.Diagnostics.Process.Start(@"C:\Program Files\Internet Explorer\IExplore.exe", "http://qaru.site/");
К сожалению, это действительно не запускает браузер по умолчанию, и он также не работает, если IE не установлен в "обычном" месте. Я не уверен, что делать здесь.
Дополнительная информация:
ОК, поэтому ошибка, которую я получаю, это номер ошибки -2147467259. Глядя на Google для этого, похоже, что он не очень описательный. Это может быть ошибка ассоциации файлов или что-то в этом роде.
Сюжет сгущается:
Итак, я проверил раздел реестра, который должен иметь мою ассоциацию файлов для http:
KEY_CLASSES_ROOT\http\shell\open\command\default
Здесь значение:
"C:\Program Files\Mozilla Firefox\firefox.exe" -requestPending -osint -url "%1"
Это имеет смысл. Я фактически скопировал эту строку в командную строку и заменил% 1 на /qaru.site/..., и она сработала и открыла firefox. Я просто не понимаю, почему Process.Start не связывает URL с этой командой...