Muchas veces se necesita abrir una página para cualquier fin. Para esta labor basta con hacer algo así:
System.Diagnostics.Process.Start(@"http://www.yahoo.es/")
Esta instrucción carga la página especificada en el navegador predeterminado.
No obstante no siempre basta con esto. ¿Y si necesitamos la ruta del ejecutable del navegador?
Esta tarea ya es más difícil porque necesitamos hurgar en el registro, y cada navegador escribe su ruta de una determinada manera. La ruta del navegador se obtiene en HKEY_CLASSES_ROOT\http\shell\open\command, con lo que obtenemos algo así:
C:\ARCHIV~1\FLOCK\FLOCK\FLOCK.EXE -requestPending -osint -url "%1"
Pero tenemos varios problemas:
- Cada navegador escribe esta entrada de una manera. Por ejemplo en unos la ruta incluye comillas y en otros no.
- Esta ruta tiene argumentos que no nos interesan, especialmente el %1.
Para solventar estos y otros problemas se me ocurrió partir la cadena desde :\ hasta .exe. Este método es efectivo y no da problemas siempre que en la ruta no haya un directorio que incluya “.exe”; pero esto lo considero poco probable. De todas formas, si alguien tiene una solución mejor, sugerencias son bienvenidas.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Win32;
/*
* Clase para obtener la ruta del navegador de Internet predeterminado
* ntrrgc software 30/03/08
* Todos los derechos reservados. Que no, ¡es broma!
*/
namespace AsGNOME
{
class GetNavigatorPathClass
{
private static string GetHttpCommand()
{
return Registry.ClassesRoot.OpenSubKey(
@"http\shell\open\command").GetValue("").ToString();
}
private static int GetStartOfPath(string path)
{
return path.IndexOf(":\\") - 1;
}
private static int GetEndOfPath(string path)
{
return path.IndexOf(".exe",StringComparison.OrdinalIgnoreCase) + 4;
}
public static string GetNavigatorPath()
{
string path = GetHttpCommand();
int start = GetStartOfPath(path);
int end = GetEndOfPath(path);
return path.Substring(start, end - start);
}
}
}
Aquí pongo la clase para su descarga, y formateada: GetNavigatorPathClass



