0

在 Windows 上,有没有办法修改当前应用程序域中的默认浏览器,但不是系统范围的?

我正在使用 C# 开发 IDE,我需要所有尝试启动默认 Web 浏览器的子进程,将我的 IDE 视为默认 Web 浏览器。但我需要这样做,它不会影响系统配置的其余部分。

不知道我是否清楚地解释了这个问题......

任何人都知道如何做到这一点?

4

2 回答 2

2

实际上,没有办法使它适用于某个过程。此值存储在注册表中,并且可以为不同的用户更改。

但总的来说有几种选择。

  1. 使用特殊用户帐户运行 debuggee,该用户帐户对于默认浏览器具有不同的注册表值。

  2. 在 reg key 中将您的 IDE 注册为默认浏览器HKEY_CLASSES_ROOT\http\shell\open\command。如果IDE可以确定调用者是否不是被调试者,则调用原始浏览器(不要忘记备份初始值)。

  3. 如果您使用主机进程之类的东西 - 拦截对 RegQueryValue 或其他注册表函数的调用,并将结果劫持给被调试者。(如果没有宿主进程,尝试注入拦截器)。或者,您可以拦截 CreateProcess 或 ShellExecute。

  4. 恐怕这不是一个选项,但是 - 您可以注册一个虚拟协议(例如 myhttp://)并假装它是 http :) 您的 IDE 将成为它的处理程序。

于 2013-10-03T20:22:42.323 回答
0

你在哪个 Windows 上?在 Windows 7 和 8 中,您可以在控制面板中找到默认程序设置。只需启动控制面板并在右上角的搜索框中键入“默认程序”。

于 2013-10-03T15:53:46.663 回答