2013-10-03 18 views
0

在Windows上,有沒有辦法修改當前應用程序域中的默認瀏覽器,但不是系統範圍的?修改所有子進程的默認瀏覽器

我正在開發使用C#的IDE,我需要所有嘗試啓動默認Web瀏覽器的子進程,請參閱我的IDE作爲默認Web瀏覽器。但我需要這樣做,它不會影響其餘的系統配置。

不知道如果我解釋清楚的問題...

任何人有任何想法如何可以這樣做?

+1

子進程不在當前應用程序域中。 –

+0

謝謝,我知道這只是非常糟糕的解釋。我的意思是在同一個應用程序進程樹中(我想這是用英語說的正確方法!),無論如何,謝謝指出它。 –

回答

2

實際上沒有辦法讓它在某個過程中。該值存儲在註冊表中,可以爲其他用戶更改。

但總的來說有幾個選項。

  1. 使用特殊用戶帳戶運行調試對象,該帳戶對默認瀏覽器具有不同的註冊表值。

  2. 將您的IDE作爲默認瀏覽器註冊到註冊碼HKEY_CLASSES_ROOT\http\shell\open\command中。如果IDE可以確定調用者是否不是調試對象,則調用原始瀏覽器(不要忘記備份初始值)。

  3. 如果您使用類似host進程的東西 - 攔截對RegQueryValue或其他註冊表函數的調用,並劫持調試對象的結果。 (如果沒有主機進程,則嘗試注入攔截器)。或者,您可以攔截CreateProcess或ShellExecute。

  4. 恐怕這不是一個選項,但是 - 你可以註冊一個虛擬協議(如myhttp://)並假裝它是http :)你的IDE將是它的一個處理程序。

1

在哪個窗戶上?在Windows 7和8中,您可以在控制面板中找到默認的程序設置。只需啓動控制面板並在右上角的搜索框中鍵入「默認程序」即可。

+0

非常感謝。我的意思是如何以編程方式從我的IDE執行此操作,並僅影響IDE子進程。就像修改PATH環境形成正在運行的程序一樣,這種更改只會影響其子進程。 –