1

ラベルクリックイベントでデフォルトブラウザでウェブサイトを開くWindowsアプリケーションをc#で作成しました。デフォルトのブラウザは Google Chrome です。そのため、アプリケーションを起動してラベルをクリックすると、Chrome で Web サイトを開くことができません。Chrome で「データ ディレクトリの作成に失敗しました - Google Chrome はそのデータ ディレクトリに読み書きできません」というエラーがスローされます。「System.Diagnostics.Process.Start」を使用してプロセスを開始しています。

興味深い点の 1 つは、アプリケーションを閉じて再度開いたときです。デフォルトの Chrome ブラウザーで Web サイトを正常に開きます。:)

Process.StartInfo のさまざまなオプションを使用して試しましたが、成功しません。以下は、Webサイトを実行するために使用される方法です。

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/");
}
4

1 に答える 1

0

WorkingDirectory を ProcessStartInfo クラスに追加してみます

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

完全なファイル名を FileName プロパティに渡すだけでは、起動されたファイルの現在の作業ディレクトリを設定するのに十分ではありません。

于 2013-10-10T12:39:25.623 に答える