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

我们都很容易在Windows 8之前(在XP / VISTA / WIN7中)执行此操作,只需对Registry进行少量更改即可完成。

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

计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.htm \ UserChoice Progid:IE.AssocFile.HTM哈希:XXXXXXXXXXX

计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.html \ UserChoice Progid:IE.AssocFile.HTM哈希:XXXXXXXXXXX

计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.xht \ UserChoice Progid:IE.AssocFile.XHT哈希:XXXXXXXXXXX

计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Explorer \ FileExts.xhtml \ UserChoice Progid:IE.AssocFile.XHT哈希:

计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associations \ UrlAssociations \ ftp \ UserChoice Progid:IE.FTP哈希:XXXXXXXXXXX

计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associations \ UrlAssociations \ http \ UserChoice Progid:IE.HTTP哈希:XXXXXXXXXXX

计算机\ HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ Shell \ Associations \ UrlAssociations \ https \ UserChoice Progid:IE.HTTPS哈希:XXXXXXXXXXX

提前谢谢了。

对于所有等待回答这个问题的人。

在这里,看起来这样做的方法之一是通过Win 8提供的DISM.exe。您的用户应该是该机器的管理员。

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

以下博客有详细信息。

http://blogs.technet.com/b/mrmlcgn/archive/2013/02/26/windows-8-associate-a-file-type-or-protocol-with-a-specific-app-using-a- GPO-EG-默认邮件客户端换至mailto-protocol.aspx

谢谢。

我相信原因是用户而不是您的软件可以控制此设置。

但是,您应该能够触发“您的计算机具有Web浏览的新应用程序”弹出窗口,以便用户可以根据需要轻松选择您的程序。

我也问了这个问题并设法找到了解决方案,这可能对你有所帮助,因为我在Windows 8.1上进行了测试并且它有效: 如何使用c#在Windows 7上设置默认浏览器?

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