9 ответов:
Я использую эту строку для запуска браузера по умолчанию:
System.Diagnostics.Process.Start("http://www.google.com");
в то время как хороший ответ был дан (с помощью
Process.Start), безопаснее инкапсулировать его в функцию, которая проверяет, что переданная строка действительно является URI, чтобы избежать случайного запуска случайных процессов на машине.public static bool IsValidUri(string uri) { if (!Uri.IsWellFormedUriString(uri, UriKind.Absolute)) return false; Uri tmp; if (!Uri.TryCreate(uri, UriKind.Absolute, out tmp)) return false; return tmp.Scheme == Uri.UriSchemeHttp || tmp.Scheme == Uri.UriSchemeHttps; } public static bool OpenUri(string uri) { if (!IsValidUri(uri)) return false; System.Diagnostics.Process.Start(uri); return true; }
Microsoft объясняет это в KB305703 статью как запустить интернет-браузер по умолчанию программно с помощью Visual C#.
Не забудьте проверить раздел Устранение неполадок.
вы не можете запустить веб-страницы из приложения с повышенными правами. Это вызовет исключение 0x800004005, вероятно, потому, что explorer.exe и браузер работают без повышения.
чтобы запустить веб-страницу из приложения с повышенными правами в веб-браузере без повышенных прав, используйте код, сделанный Майком Фэном. Я попытался передать URL-адрес lpApplicationName, но это не сработало. Также не тогда, когда я использую CreateProcessWithTokenW с lpApplicationName = "explorer.exe " (или iexplore.исполняемый) и lpCommandLine = url.
следующий обходной путь действительно работает: создайте небольшой EXE-проект, который имеет одну задачу: процесс.Start (url), используйте CreateProcessWithTokenW для запуска этого.ИСПОЛНЯЕМЫЙ. На моем Windows 8 RC это отлично работает и открывает веб-страницу в Google Chrome.
вот мой полный код, как его открыть.
есть 2 варианта:
открыть с помощью браузера по умолчанию (поведение, как открыть в окне браузера)
открыть через параметры команды по умолчанию (поведение, как вы используете "RUN.Команды, исполняемые")
открыть через " проводник "(поведение, как вы написали url внутри url окна папки)
[дополнительное предложение] 4. использовать iexplore расположение процесса, чтобы открыть нужный url
код:
internal static bool TryOpenUrl(string p_url) { // try use default browser [registry: HKEY_CURRENT_USER\Software\Classes\http\shell\open\command] try { string keyValue = Microsoft.Win32.Registry.GetValue(@"HKEY_CURRENT_USER\Software\Classes\http\shell\open\command", "", null) as string; if (string.IsNullOrEmpty(keyValue) == false) { string browserPath = keyValue.Replace("%1", p_url); System.Diagnostics.Process.Start(browserPath); return true; } } catch { } // try open browser as default command try { System.Diagnostics.Process.Start(p_url); //browserPath, argUrl); return true; } catch { } // try open through 'explorer.exe' try { string browserPath = GetWindowsPath("explorer.exe"); string argUrl = "\"" + p_url + "\""; System.Diagnostics.Process.Start(browserPath, argUrl); return true; } catch { } // return false, all failed return false; }и вспомогательная функция:
internal static string GetWindowsPath(string p_fileName) { string path = null; string sysdir; for (int i = 0; i < 3; i++) { try { if (i == 0) { path = Environment.GetEnvironmentVariable("SystemRoot"); } else if (i == 1) { path = Environment.GetEnvironmentVariable("windir"); } else if (i == 2) { sysdir = Environment.GetFolderPath(Environment.SpecialFolder.System); path = System.IO.Directory.GetParent(sysdir).FullName; } if (path != null) { path = System.IO.Path.Combine(path, p_fileName); if (System.IO.File.Exists(path) == true) { return path; } } } catch { } } // not found return null; }надеюсь, что помогла.
Я проверил, что он работает отлично
Я использую эту строку для запуска браузера по умолчанию:
System.Diagnostics.Process.Start("http://www.google.com");
У меня есть решение для этого из-за у меня сегодня похожая проблема.
предполагается, что вы хотите открыть http://google.com из приложения, работающего с правами администратора:
ProcessStartInfo startInfo = new ProcessStartInfo("iexplore.exe", "http://www.google.com/"); Process.Start(startInfo);
старый школьный путь;)
public static void openit(string x) { System.Diagnostics.Process.Start("cmd", "/C start" + " " + x); }использование:
openit("www.google.com");
Comments