如何使用C#在windows 8中设置默认浏览器?

如何使用C#在windows 8中设置默认浏览器?,c#,browser,windows-8,default,C#,Browser,Windows 8,Default,在Windows8(在XP/VISTA/WIN7中)之前,我们都可以很容易地做到这一点,只需对注册表进行很少的更改,而且已经做到了 使用Windows8并不是那么容易(我还没有弄清楚如何使用)。下面提到的Windows8也很少有要更改的注册表设置,但除此之外,它还为每台计算机存储一个唯一的哈希值。任何人都可以帮助我为每台计算机创建此哈希,或者使用Microsoft提供的某些API设置默认浏览器(“SetAppAsDefaultAll”不起作用)。以下是注册表项 Computer\HKEY\U C

在Windows8(在XP/VISTA/WIN7中)之前,我们都可以很容易地做到这一点,只需对注册表进行很少的更改,而且已经做到了

使用Windows8并不是那么容易(我还没有弄清楚如何使用)。下面提到的Windows8也很少有要更改的注册表设置,但除此之外,它还为每台计算机存储一个唯一的哈希值。任何人都可以帮助我为每台计算机创建此哈希,或者使用Microsoft提供的某些API设置默认浏览器(“SetAppAsDefaultAll”不起作用)。以下是注册表项

Computer\HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.htm\UserChoice Progid:IE.AssocFile.HTM散列:xxxxxxxxxx

Computer\HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.html\UserChoice Progid:IE.AssocFile.HTM散列:xxxxxxxxxx

Computer\HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.xht\UserChoice Progid:IE.AssocFile.XHT散列:xxxxxxxxxx

Computer\HKEY\U CURRENT\U USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts.xhtml\UserChoice Progid:IE.AssocFile.XHT哈希:

计算机\HKEY\U当前\U用户\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\ftp\UserChoice Progid:IE.FTP散列:xxxxxxxxxx

计算机\HKEY\U当前\U用户\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice Progid:IE.HTTP散列:xxxxxxxxxx

计算机\HKEY\U当前\U用户\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\https\UserChoice Progid:IE.HTTPS散列:xxxxxxxxxx


非常感谢。

我认为原因是用户而不是您的软件可以控制此设置


但是,您应该能够触发“您的计算机有新的Web浏览应用程序”弹出窗口,以便用户可以轻松地选择您的程序(如果他们愿意)。

适用于所有等待回答此问题的人

现在,看起来其中一种方法是通过Win 8提供的DISM.exe。您的用户应该是机器的管理员

使用C#代码,您应该能够使用特定参数运行此DISM.exe

下面的博客有详细内容


谢谢。

我也问了这个问题,并设法找到了一个解决方案,这可能会对您有所帮助,因为我在Windows 8.1上测试了它,并且它工作正常:


这实际上适用于您希望将任何程序作为其协议和文件扩展名的默认设置的情况。

同意,在win7或更早版本中,这不是什么大问题。我也很想知道你是怎么说的。也许这有助于理解你说的话。但是谷歌可以通过chrome做到这一点:)所以即使是我也应该可以:)谷歌chrome设置了相同的注册表设置,包括哈希。安装谷歌chrome后,我会得到要使用哪个浏览器的提示。没有我的干预是不会改变的,只是检查了一下。是的,你是对的。让我确认是否没有其他应用程序不询问用户就执行此操作。如果我找不到任何答案,我会给你的答案打上正确的标记。Adobe仍然在Windows 8.1上以旧的方式进行操作,而且我不是黑客,所以我无法弄清他们是如何操作的。我用API监视器分析了这个过程,可以看到它们写入注册表,但没有进一步的线索。如果您有Adobe Reader 11,可以使用以下命令触发它:c:\Program Files(x86)\Common Files\Adobe\ARM\1.0\AdobeARMHelper.exe/RegisterFileTypesOwnership/PRODUCT:Reader/VERSION:11.0/INSTALLDIR:“c:\Program Files(x86)\Adobe\Reader 11.0\”/LANG:chs这确实需要UAC提示符,但是没有使用新的文件关联UI。我很高兴你找到了解决方案。用户应该能够自动化该过程,这是有道理的——关键是阻止应用程序覆盖用户的首选项,而不是使管理变得困难。当然,对于超级用户或服务器故障,管理员使用的管理方法是一个更好的主题。在StackOverflow上,我们处理的是代码,而不是组策略。但是,对于那些试图通过代码来实现这一点却没有成功的人来说。这可能会告诉他们,这样做是不可能的。
Oops!找不到那个页面。此页面已被禁用。