Google Chrome 无法使用 Process.Start() 从应用程序打开

本文关键字:应用程序 Start Process Chrome Google | 更新日期: 2023-09-27 18:34:41

我用 C# 编写了 Windows 应用程序,该应用程序在标签单击事件的默认浏览器中打开网站。我的默认浏览器是谷歌浏览器。因此,当我启动应用程序并单击标签时,它无法在Chrome中打开网站。Chrome 抛出错误"无法创建数据目录 - 谷歌浏览器无法读取和写入其数据目录"。我正在使用"System.Diagnostics.Process.Start"来启动进程。

一件有趣的事情是,当我关闭应用程序并重新打开它时。它成功地在默认的Chrome浏览器中打开网站。:)

我尝试使用Process.StartInfo的各种选项,但从未成功。以下是用于运行网站的方法。

我使用的是Windows 8-64Bit和.Net Framework 4。你能帮我吗?

测试1:

public static void RunWebClient()
{
    Process proc = new Process();
    Microsoft.Win32.RegistryKey subKey = Microsoft.Win32.Registry.ClassesRoot.OpenSubKey(@"http'shell'open'command");
    String DefaultBrowser = subKey.GetValue(null).ToString();
    if (DefaultBrowser != null)
    {
        int startIndex = DefaultBrowser.IndexOf("'"") + 1;
        int endIndex = DefaultBrowser.IndexOf("'"", startIndex);
        string RegDefaultBrowserPath = DefaultBrowser.Substring(startIndex, endIndex - startIndex);
        proc.StartInfo.FileName = RegDefaultBrowserPath;
        proc.StartInfo.Arguments = @"http://localhost/Test/";
        proc.StartInfo.UseShellExecute = true;
        proc.StartInfo.LoadUserProfile = false;
        proc.Start();
    }
}

测试2:

public static void RunWebClient()
{
    System.Diagnostics.Process.Start("http://localhost/Test/");
}

Google Chrome 无法使用 Process.Start() 从应用程序打开

我会尝试将 WorkingDirectory 添加到您的 ProcessStartInfo 类中

proc.StartInfo.FileName = Path.GetFileName(RegDefaultBrowserPath);
proc.StartInfo.WorkingDirectory = Path.GetDirectoryName(RegDefaultBrowserPath);

完整的文件名传递到 FileName 属性中不足以设置启动文件的当前工作目录。