2009-06-09 9 views

Répondre

5

Je pense que vous devez modifier atleast deux RegistryKeys et définir le chemin du navigateur alternatif:

HKEY_CLASSES_ROOT\http\shell\open\command 
HKEY_CLASSES_ROOT\htmlfile\shell\open\command 

Un alternative peut être de créer une entrée supplémentaire sous la clé Shell et le définir comme l'action par défaut :

[HKEY_CLASSES_ROOT\http\shell] 
(default) set to OpenWithMyBrowser 

[HKEY_CLASSES_ROOT\http\shell\OpenWithMyBrowser\command] 
(default) set to "MyBrowser.exe" 
+0

C'était très utile merci. –

7

Le navigateur par défaut est enregistré en tant qu'entrée dans la clé de Registre de Windows. Les valeurs sont enregistrées sur une base de protocole comme celui-ci

HKEY_CLASSES_ROOT \ [protocole] \ shell \ open \ command

Où protocole peut être http, https, etc. sur la façon d'accéder/modifier registre valeurs à l'intérieur de C#, vous pouvez jeter un oeil à this article

1

pour les PC windows 7, vous devez changer la clé de registre pour le

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\ Associations\UrlAssociations\http 

vous pouvez changer cela en utilisant C#

RegistryKey regkey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\shell\\Associations\\UrlAssociations\\http\\UserChoice", true); 
string browser = regkey.GetValue("Progid").ToString(); 

if (browser != "IE.HTTP") 
{ 
     regkey.SetValue("Progid", "IE.HTTP"); 
} 

pour avant vista os - (vérifié dans Windows XP)

RegistryKey regkey = Registry.ClassesRoot.OpenSubKey("http\\shell\\open\\command", true);   
string browser = regkey.GetValue(null).ToString().ToLower().Replace("\"", ""); 
string defBrowser = ""; 
if (!browser.EndsWith("exe")) 
{ 
     //get rid of everything after the ".exe" 
     browser = browser.Substring(0, browser.LastIndexOf(".exe") + 4); 
     defBrowser = browser.Substring(browser.LastIndexOf("\\") + 1); 
} 

if (defBrowser != "iexplore") 
{ 
     Process.Start("IExplore.exe"); 
    ScreenScraperEngine.Instance.Wait(2000); 
    string iepath = ""; 
    foreach (Process p in Process.GetProcesses()) 
    { 
     if (p.ProcessName == "IEXPLORE") 
     { 
    iepath = p.MainModule.FileName;       
     } 
    } 
    if (iepath != "") 
     { 
      string iepathval = "\"" + iepath + "\" -nohome"; 
      regkey.SetValue(null, iepathval); 
     } 
    }