2011-08-10 153 views

回答

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文件夹prefs.js(结帐这个post通过代码来获取它)
  • 不知道关于Chrome和Safari

但你明白了。

不知道你的最终目标是什么,但是从UX的角度来看,我认为做的最好的事情将是用户指定下载目录(换句话说,你在揭露设置你的应用程序的默认下载位置)。

1

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

+0

我怀疑你需要管理员配置文件:它的用户设置 –

0

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

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

坏消息是应用程序在用户上下文中运行(很可能),可能没有管理员权限并且无法使用注册表项来改变文件夹。