我正在尝试创建一个只需将默认浏览器切换到Google Chrome(注册表UrlAssociations\\http\\UserChoice
)的C#控制台应用程序。下面的代码有点工作,因为它 更改了Windows注册表中的Progid
值,但.html文件和链接仍然在以前的默认浏览器中打开,似乎没有任何“更新” 。我尝试以管理员身份运行我的内置.exe文件,但不会更改任何内容。在Windows设置>默认应用> Web浏览器每次运行我的软件时都设置为Microsoft Edge - 注册表中的ProgId
也会更改回Microsoft Edge ID(AppXq0fevzme2pys62n3e0fbqa7peapykr8v
)。
RegistryKey regkey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\shell\\Associations\\UrlAssociations\\http\\UserChoice", true);
string browser = regkey.GetValue("Progid").ToString();
Console.WriteLine("Current browser: " + browser);
if (browser != "ChromeHTML") {
regkey.SetValue("Progid", "ChromeHTML");
string browser2 = regkey.GetValue("Progid").ToString();
Console.WriteLine("Changed " + browser + " to " + browser2);
} else {
Console.WriteLine("Default browser is already Chrome");
}
Console.ReadKey();
我使用的代码在网上找到了多个地方,但它缺少什么? (我使用的是Microsoft Surface Pro 3,如果有任何改变的话)
修改
澄清我并不是在试图决定用户的浏览器应该是什么。我正在制作这个,因为我们学校每次重新启动计算机时都会将学校笔记本电脑的默认浏览器重置为Internet Explorer - 而且没有别的方法可以解决这个问题。