使用C#更改浏览器下载文件夹

时间:2011-08-10 13:39:32

标签: c# browser client

有没有办法可以使用c#更改默认Web浏览器的下载文件夹。

3 个答案:

答案 0 :(得分:1)

扩展Ash的评论 - 如果你在一个网络应用程序中,没有。如果您是桌面应用程序,并且您有足够的权限(即以管理员身份运行),可能。但是你需要找到默认的浏览器(大概是从注册表中),并知道如何为每个流行的浏览器或你想要使用的每个浏览器设置下载文件夹。

答案 1 :(得分:0)

你想从哪里做到这一点?如果你的意思是“有人点击我们的网站......”,答案就是否定,因为你运行的任何内容都属于安全环境。你当然可以建议用户更改文件夹,但你被卡住了。

假设您不是Web应用程序,则可以选择。主用户下载目录位于密钥{374DE290-123F-4565-9164-39C4925E467B}下的X处。是的,这听起来很有趣。您可以在这里以编程方式学习如何hack the registry。但是,用户也可以在浏览器中指定特定文件夹。这意味着您必须知道用户正在使用哪种浏览器并将其破解,或者您可以尝试破解所有浏览器。

坏消息是应用程序在用户上下文中运行(最有可能),可能没有管理员权限,并且能够敲击注册表项来更改文件夹。

答案 2 :(得分:0)

与其他人的评论一致,如果您拥有正确的权限,则只能在桌面应用中执行此操作。

以下是一些示例代码,用于查找系统的默认浏览器(来自此post):

private string getDefaultBrowser()
{
    string browser = string.Empty;
    RegistryKey key = null;
    try
    {
        key = Registry.ClassesRoot.OpenSubKey(@"HTTP\shell\open\command", false);

        //trim off quotes
        browser = key.GetValue(null).ToString().ToLower().Replace("\"", "");
        if (!browser.EndsWith("exe"))
        {
            //get rid of everything after the ".exe"
            browser = browser.Substring(0, browser.LastIndexOf(".exe")+4);
        }
    }
    finally
    {
        if (key != null) key.Close();
    }
    return browser;
}

然而,事情变得棘手了。不同的浏览器有不同的方法来保存默认位置。

,例如,

  • IE可以将其存储在注册表中(通常在HKEY_CURRENT_USER\ Software\ Microsoft\ Internet Explorer下)
  • FF将其存储在Profile {{1}}文件夹中的prefs.js(通过代码查看此post以获取该邮件)
  • 不确定Chrome和Safari

但你明白了。

不确定您的最终目标是什么,但从UX的角度来看,我认为最好的办法是 询问 用户指定下载目录(在换句话说,您在应用程序中显示默认下载位置的设置。)