2011-08-10 152 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。但是,用戶也可以在瀏覽器中指定一個特定的文件夾。這意味着你必須知道用戶正在使用哪個瀏覽器並對其進行破解,或者你可以嘗試破解所有的內容。

壞消息是應用程序在用戶上下文中運行(很可能),可能沒有管理員權限並且無法使用註冊表項來改變文件夾。