web-dev-qa-db-ja.com

Windows 7で既定のブラウザーを一覧にないプログラムに変更するにはどうすればよいですか?

私は複数のブラウザーを定期的に使用しているため、既に実行しているブラウザー(またはFirefoxがない場合はFirefox)でページを開くスクリプトを作成しました。このスクリプトをデフォルトのブラウザとして設定します。 [関連付けの設定]ダイアログに移動してHTTPを選択し、[プログラムの変更]をクリックすると、ポップアップするダイアログで、既にインストールされているWebブラウザー以外を選択できません。これは、すべてのプロトコルに当てはまるようです(「その他のプログラム」から選択したり、リストされていないプログラムを参照したりできるファイル拡張子とは異なります)。 Windowsヘルプはこれについて何も言わず、利用できない「参照...」ボタンを使用するよう指示するだけです。サードパーティの「デフォルトプログラムエディタ」も試してみましたが、それができないようです。

スクリプトを手動で(おそらくレジストリを編集して)デフォルトとして設定する方法はありますか?

25
Morgan May

はい、レジストリを直接操作してスクリプトを作成できます。

短い答え

以下のそれぞれを.regファイル(firefox.regchrome.regie.regなど)にコピーし、切り替えたいときに実行します(または、reg.exeでスクリプトを作成します)。

Firefoxの場合:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="FirefoxURL"

Chromeの場合:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="ChromeHTML"

IE9の場合:

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations\http\UserChoice]
"ProgId"="IE.HTTP"

長い答え

Windowsでは、ユーザーごとの標準プロトコルのデフォルト登録をUrlAssociationsキーの下に格納しています。

HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\UrlAssociations

ファイルの関連付けと同様に、リンクには「デフォルトプログラム」を設定できます。これは、UserChoiceキーを参照する一種の専門用語です。http ProgIdの下に、標準のファイル関連付けのようなシェル登録もあり、これはも可能です変更されますが、ブラウザの近位設定はデフォルトプログラムを介して行われます(これに関する追加コメントについては、下部を参照してください)。

ここで私が話しているのは、コントロールパネルの[既定のプログラム]セクションに移動してブラウザーを設定するときに変更する内容です。

Default Programs for Protocols in the Control Panel

これをレジストリで直接構成するには、まず、すでにそこにあることを調べてみましょう。このスクリーンショットでは、regedit.exeでそのキーに移動しました。Chromeは、ChromeHTML ProgId値で指定されたデフォルトのブラウザーです。

Navigating to the UrlAssociations subkey in regedit

リンクをクリックしたときに開くブラウザーを切り替えるために必要な最小限の変更は、変更する各プロトコルのProgIdサブキーの下のUserChoice値を変更することです(おそらくhttphttpsは同じになりますが、何らかの理由でそれぞれを別々のブラウザーで開くようにしたい場合は、できます)。

これは、Firefox、IE、および他のどのブラウザーに切り替えるかを決定するだけの問題です。これをプログラムで決定したい場合は、Firefoxの場合はここにあるブラウザー登録のCapabilitiesキーを掘り下げることでそれを行うことができます。

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternet\FIREFOX.EXE\Capabilities\URLAssociations

HKEY_LOCAL_MACHINE\SOFTWARE\Clients\StartMenuInternetはすべてのブラウザーがリストされる場所であり、それぞれが上記の構造を持つ必要があります。

Navigating to the Capabilities key in regedit

調べてみると、Firefoxに切り替えたい場合は、FirefoxURL ProgId値をUrlAssociationsにバックアップして使用していることがわかります。

(ただし、このように掘り下げたくない場合は、簡単なチートがあります。デフォルトとして必要なブラウザーを設定し、regeditを更新して、ブラウザーがUserChoiceに設定した内容を確認してください。)

キーの値をFirefoxURLに変更するだけで、Firefoxでリンクが開きます。これを行った後、リンクをクリックするか、コントロールパネルで正しいデフォルトが登録されていることを再確認します。

Double checking the default program in the Control Panel

今、あなたが細心の注意を払っていたなら、あなたはこれのすべてにいくつかの欠陥に気づいたかもしれません:

  1. IEはURLAssociationsのブラウザー登録の下にStartMenuInternetサブキーがないので、ProgId値はどこから取得されますか?回答:わかりません。少なくともこれ以上の研究が必要です。ハードコードされているか、まだ見つけていない別のキーに含まれている可能性があります。

  2. その下のFirefoxのProgIdはURLAssociationsFirefoxURLですが、クリックしてブラウザー自体のオプションに登録すると、代わりにFirefoxHTMLがProgIdとして使用されます。どうして?繰り返しますが、わかりません。どちらも存在し、Firefoxを指しているため、どちらも機能します。多分それは意図的なものですが、おそらく効果のない単なるバグです。

  3. UserChoiceデフォルトプログラムがない場合はどうなりますか?回答:プロトコルの「通常の」ファイル関連付け(たとえば、http)が使用されます。これは、ファイルの関連付け(HKCU\Software\ClassesHKLM\Software\Classes、およびHKCRのビュー)と同様に、標準のProgIdの場所にあります。少なくともChromeはそこに情報を設定すると思いますが、少なくとも私のテストではFirefoxはそうではないようです。

  4. これをデフォルトプログラムエディタに追加したい場合は、そのアプリケーションの serVoiceフィードバックページ で提案して賛成することをお勧めします。私は、アプリケーションの作成者が彼の開発時間をどのように費やすかを決定するときにそのフィードバックに注意を払うことは、十分な権限に基づいています!

36
Factor Mystic

これは今日でもWindows 10に関連があるため、投稿します。

レジストリに関する他の回答が表示されます。これは便利ですが、すべて手作業で行うのは非常に困難です。したがって、私は自分で行う必要のあるすべてのものを取り除いた自分のレジストリ構成(この回答の下部にある)を送信したいと思います!これを作成したのは、「Ungoogled Chromium」ブラウザをデフォルトとして使用したかったのですが、利用可能なブラウザのリストにアプリケーションを追加するための適切なインストーラがありませんでした。

.regファイルをPCに保存してから、次の手順を実行します。

  • .regファイルのパスを編集して、独自のアプリケーションへのパスと一致させます。鉱山は「C:\ Program Files\Ungoogled Chromium\chrome.exe」です(.regファイルから取得)。それが適切にエスケープされていることを確認してください!
  • .regファイルをインポートします。
  • オプション:ブラウザーを指すショートカットを%Appdata%/ Roaming/Microsoft/Windows/Start Menu/Programsに配置します。

私が持っている唯一の問題は、何らかの理由で、Chromiumがデフォルトにした後でも、それがデフォルトのブラウザではないと言ってしまうことです。 Chrome=をインストールし、Chromiumに切り替えた後、メッセージは消えました。IEに切り替えてからChromiumに戻った後です。私はしません残念ながらその理由は分かりますが、警告を無効にしてください。

レジストリファイルを正しくインポートすると、ブラウザが選択可能なアプリケーションのリストに表示されます。 デフォルトアプリケーションリスト

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\UngoogledChromium\Capabilities]
"ApplicationDescription"="Chromium without Google's phone home."
"ApplicationIcon"="\"C:\\Program Files\\Ungoogled Chromium\\chrome.exe\",0"
"ApplicationName"="Ungoogled Chromium"

[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\UngoogledChromium\DefaultIcon]
@="C:\\Program Files\\Ungoogled Chromium\\chrome.exe,0"

[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\UngoogledChromium\Capabilities\FileAssociations]
".crx"="UngoogledChromium"
".htm"="UngoogledChromium"
".html"="UngoogledChromium"
".nex"="UngoogledChromium"
".pdf"="UngoogledChromium"
".shtml"="UngoogledChromium"
".xht"="UngoogledChromium"
".xhtml"="UngoogledChromium"

[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\UngoogledChromium\Capabilities\Startmenu]
"StartMenuInternet"="UngoogledChromium"

[HKEY_CURRENT_USER\Software\Clients\StartMenuInternet\UngoogledChromium\Capabilities\UrlAssociations]
"http"="UngoogledChromium"
"https"="UngoogledChromium"
"ftp"="UngoogledChromium"
"mailto"="UngoogledChromium"


[HKEY_CURRENT_USER\Software\Classes\UngoogledChromium]
"FriendlyTypeName"="Chromium Web Document"
"URL Protocol"=""

[HKEY_CURRENT_USER\Software\Classes\UngoogledChromium\DefaultIcon]
@="C:\\Program Files\\Ungoogled Chromium\\chrome.exe,0"

[HKEY_CURRENT_USER\Software\Classes\UngoogledChromium\Shell]

[HKEY_CURRENT_USER\Software\Classes\UngoogledChromium\Shell\open]

[HKEY_CURRENT_USER\Software\Classes\UngoogledChromium\Shell\open\command]
@="\"C:\\Program Files\\Ungoogled Chromium\\chrome.exe\" -- \"%1\""
0
admbot