web-dev-qa-db-ja.com

Windows10で保護されたファイル拡張子のアイコンを変更する

目標は、.jpg、.png、.tif、および.rawファイルを常にPhotoshop CC 2015で開き、適切なアイコンを使用するようにすることです。

Example

Windows 10がファイルのアイコンを選択する方法については、以下のフローチャートを参照してください。レジストリに変更を加え、結果を観察することでこれを思いつきました。

(拡大するにはクリックしてください) - Flowcart

問題

  • 拡張子がファイルタイプに関連付けられている場合、拡張子キーで定義されたデフォルトのアイコンは無視されます。
  • UserChoiceキーProgId値で定義されたファイルタイプは、拡張子キーで定義されたファイルタイプを上書きします。
  • Photoshopを.jpgおよび.pngの常時オープンアプリとして設定すると、UserChoice key ProgId値がApplication/Photoshop.exeに設定されます。
  • 新しいハッシュセキュリティのため、UserChoice key ProgId値を変更できません
  • .jpgや.pngなどの保護された拡張子のUserChoiceキーを削除できません

質問/考えられる解決策

  1. 拡張子レベルでファイルタイプによって定義されたアイコンを上書きする方法はありますか?
  2. 拡張レベルでUserChoiceキーで定義されたファイルタイプを上書きする方法はありますか?
  3. GUIでalways-open-withアプリを設定するときにUserChoiceキーのProgId値が何に設定されるかを決定するものと、.tifがPhotoshop.TIFFFile.90になり、.pngと.jpgの結果はApplication/Photoshop.exe
  4. UserChoiceキーに必要なハッシュを生成する方法はありますか?
  5. WindowsがUserChoiceキーハッシュをチェック/要求するのを止める方法はありますか?
  6. GUIを使用して、Photoshop.JPEGFile.90のようなファイルタイプを常時オープンアプリとして指定する方法はありますか?
  7. WindowsがUserChoiceキーを保護/再作成するのを防ぐ方法はありますか?

ノート

レジストリの変更は、Explorer.exeが再起動/更新されるまで有効になりません。タスクマネージャーを使用してExplorer.exeを強制終了して再起動するか、 DesktopRefresh.exe を使用できます。

UserChoiceキーは、次の2つの場所に存在できます。

  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
  • HKCU\SOFTWARE\Microsoft\Windows\Roaming\OpenWith\FileExts\.jpg\UserChoice

一方が存在しない場合は、もう一方が使用されます。したがって、変更を加える場合は、必ず両方を削除/変更してください。

キーの例:

  • 拡張キー:HKCR\.jpg
  • ファイルタイプキー:HKCR\Photoshop.JPEGFile.90
  • UserChoiceキー:HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice

詳細

Photoshopが最初にインストールされたとき、それはすべてのファイル拡張子を関連付け、すべてが素晴らしかった。ある時点で、Photosアプリで常に.png、.jpg、.tif、および.rawファイルを開きたいと思いました。だから私は:.png/.jpg/.tif /.rawファイルを右クリック->で開く->別のアプリを選択->写真を選択->「このアプリで常に.pngファイルを開く」にチェックを入れます。ここで、Photoshopでのオープニングに戻りたいと思います。以前と同じように、常に使用するアプリとしてPhotoshopを選択しました。これで、.jpg、.png、.tif、および.rawファイルがPhotoshopで開きます。ただし、.tifファイルには正しいアイコンが表示されますが、.jpg、.png、および.rawにはPhotoshop.exeアイコンが表示されます。

Photoshopを再インストールしようとしましたが、効果がありませんでした。 Adobe Bridgeを使用してファイルの関連付けをリセットしようとしましたが、それも役に立ちませんでした。ファイルタイプマネージャーやデフォルトプログラムエディターなどのツールは機能しません(理由は以下で説明します)。

次に、Windows10が特定のファイルに表示するアイコンをどのように選択するかを調べ始めました。私は学んだ:

  1. 拡張子がファイルタイプに関連付けられている場合は、そのファイルタイプキーで定義されたアイコンが使用されます。それ以外の場合は、拡張キーで定義されたアイコンが使用されます。
  2. 拡張機能は、2つの方法でファイルタイプに関連付けることができます。拡張機能にalways-open-withプログラム/アプリが設定されている場合、そのプログラム/アプリが拡張機能のファイルタイプとして使用されます。それ以外の場合は、ファイルタイプを拡張子キーで定義できます。

私の場合、.jpg、.png、.tif、.rawでは、Photoshopが常に開いているアプリとして設定されています。これは、を介してレジストリに反映されます。

  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.png\UserChoice
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.tif\UserChoice
  • HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.raw\UserChoice

キー。ここで、.tifと.jpg/.png /.rawの違いがわかります。 .tifのProgId値はPhotoshop.TIFFFile.90ですが、.jpg、.png、および.rawの値はApplications\Photoshop.exeです。つまり、.tifはPhotoshop.TIFFFile.90ファイルタイプに正しく関連付けられていますが、.jpg.pngと.rawはファイルタイプApplications\Photoshop.exeに関連付けられています。

.jpg、.png、および.rawはすべてそのファイルタイプを使用するため、Applications\Photoshop.exeファイルタイプのアイコンを単純に変更することはできません。したがって、同じアイコンが3つの拡張機能で使用されます。拡張機能ごとに一意のアイコンを指定することはできません。これが、ファイルタイプマネージャーとデフォルトのプログラムエディターツールが機能しない理由です。この場合、ファイルタイプのDefaultIconを設定します。

解決策は単純に見えました。ProgIdキーのUserChoice値を変更して、Photoshop.JPEGFile.90Photoshop.PNGFile.90、およびPhotoshop.RAWFile.90ファイルタイプを使用します。これは、Windows10ではもう不可能です。新しいセキュリティ対策により、HashキーのProgId値に付随するUserChoice値が追加されます。このハッシュを生成する方法を知っているのはWindowsだけです。ハッシュがProgId値に対して正しくない場合、WindowsはUserChoiceキーをリセット/削除します。これにより、この値はWindowsGUIを介してのみ設定できるようになります。アイデアは、ウイルス/攻撃者が拡張機能用の常時オープンアプリをプログラムで変更できないようにすることです。

Photoshopを常時オープンアプリとして選択した結果、正しいProgIdが.tifに設定されたが、.jpg、.png、.rawには設定されなかった理由はわかりませんが、それは不可能のようです。修正。この時点で、私は.tgaのように触れたことのない他の拡張子を見始めました。 .tgaにalways-open-withアプリを設定したことがないため、UserChoiceキーがありませんでした。代わりに、.tgaの拡張キーは、次のように関連するタイプを定義しました。

[HKCR\.tga]
@="Photoshop.TGAFile.90"

別の一見単純な解決策:UserChoiceキーを削除して、always-open-withアプリの設定を解除し、拡張キーでファイルタイプを定義します。これは.rawでは機能しましたが、.jpgと.pngでは機能しませんでした。 .jpgおよび.pngのUserChoiceキーを削除すると、次のエラーが表示されたWindows通知が表示されました。

アプリのデフォルトがリセットされました

アプリが.jpgファイルのデフォルトのアプリ設定で問題を引き起こしたため、写真にリセットされました

レジストリを更新しましたが、確かにUserChoiceキーが戻ってきました。 Windowsは一部の拡張子(.jpgや.pngなど)を保護しており、UserChoiceキーを削除できないことがわかりました。

したがって、UserChoiceキーを削除したり、UserChoice.ProgIdを正しい値に更新したり、UserChoice.ProgId...で指定されたファイルタイプを上書きしたりすることはできません。今?

6
Mike

私はハッキーな回避策を見つけましたが、適切でハッキーでない解決策を見つけることができるように、上記の質問に対する回答を得たいと思います。

以下の初心者向けのステップバイステップ。

ダミーの.cmdファイルを作成し、GUIを使用して拡張機能の常時オープンアプリとして設定します。これにより、Windowsはダミーの.cmd "app"の新しいファイルタイプを作成し、UserChoiceキーProdId値(例:Application/customJPEG.cmd)を設定して拡張子に関連付けます。一意の名前のダミー.cmdファイルを使用して、拡張子ごとにこのプロセスを繰り返します。bamには、各拡張子に関連付けられた一意のファイルタイプがあります(例:Application/customJPEG.cmdApplication/customPNG.cmdなど)。その後、アイコンをカスタマイズし、新しいファイルタイプごとに個別にコマンドを開いたり編集したりできます。

Windowsがファイルのアイコンを選択する方法の詳細については、元の質問のフローカートを参照してください。

注:この回避策は、.jpgや.pngなどの保護された拡張子にのみ必要です。保護されていない拡張機能の解決策については、上記の私の質問を参照してください。ただし、この回避策は、どの拡張機能でも機能するはずです。



クイックボキャブラリー:

  • ファイル拡張子:ファイル名の最後のドットの後に続くもの。 .jpg、.jpeg、.pngなどはすべて異なるファイル拡張子です。
  • ファイルタイプ:ファイルの分類/カテゴリ。 1つ以上のファイル拡張子に関連付けることができます。たとえば、JPEGファイルタイプは、.jpgファイル拡張子と.jpegファイル拡張子の両方に関連付けることができます。

注:。jpgや.pngなどの画像ファイル拡張子は、画像のサムネイルを表示します。アイコンを表示するには、空のファイルを作成するか(サムネイルを生成できないようにする)、エクスプローラーウィンドウを開いて[表示]を[詳細]に設定します。

注:デスクトップを更新するまで、何も変更されません。レジストリに変更を加えた後は、必ずこれを行ってください。詳細については、手順6を参照してください。

注:レジストリにキーがないように思われる場合は、F5キーまたは[表示]-> [更新]を押して更新してみてください。 regeditは最新の状態に保たれず、最新のものを表示するには更新が必要です。


ファイル拡張子ごとに、以下の手順を繰り返します。 .jpgをファイル拡張子に置き換え、Photoshopを任意のアプリに置き換えます。

1.ダミーの.cmdファイルを作成します

  1. メモ帳を開く
  2. ファイルは空のままにしておくことができます
  3. ファイル->名前を付けて保存
  4. ファイル名としてcustomJEPG.cmdのようなものを使用して、保存します

どこに保存するか、何に名前を付けるかは関係ありません名前はファイルタイプごとに異なる必要があります。ダミーの.cmdの名前によって、ファイルタイプの名前が決まります。後で区別しやすいように、名前に拡張子またはファイルタイプを含めることをお勧めします。

2.ダミーの.cmdファイルをalways-open-withアプリとして設定します

  1. .jpgファイルを右クリックします
  2. で開く->別のアプリを選択
  3. 「常にこのアプリを使用して.jpgファイルを開く」がチェックされていることを確認してください
  4. 一番下までスクロールして、[その他のアプリ↓]をクリックします
  5. もう一度一番下までスクロールして、[このPCで別のアプリを探す]をクリックします
  6. ダミーの.cmdファイルを参照して選択します
  7. 「このアプリはPCで実行できません」というエラーを無視して閉じます
  8. 「このファイルをどのように開きますか?」ウィンドウが再びポップアップし、上部の[このアプリを使用し続ける]でダミーの.cmdファイルが選択されていることを確認し、[常にこのアプリを使用して.jpgファイルを開く]をオンにして、[OK]をクリックします。

複数のファイル拡張子で同じファイルタイプを共有する場合は、拡張子ごとに上記の手順1〜7を繰り返します。

3.新しい関連ファイルタイプを取得します

  1. レジストリを開く
  2. 案内する:
    HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.jpg\UserChoice
  3. ProgIdの値をコピー/書き留めます。これは、現在.jpg拡張子に関連付けられているファイルタイプです。

ファイルタイプはApplications\{the name of your dummy .cmd}である必要があります。例:Applications\customJPEG.cmd

4.正しいアイコンを使用するようにファイルタイプを更新します

  1. Regeditで、HKEY_CLASSES_ROOT\に移動します
  2. 次に、ファイルタイプと同じ名前のキーを開きます。たとえば、ファイルタイプがApplications\customJEPG.cmdの場合、次を開きます。
    HKEY_CLASSES_ROOT\Applications\customJEPG.cmd
  3. DefaultIconという名前の新しいキーを内部に作成します
  4. DefaultIconキーの(デフォルト)値を、使用するアイコンへのパスに設定します。例:
    E:\Tools\Adobe\Adobe Photoshop CC 2015\Photoshop.exe,30

5.ファイルタイプを更新して、Photoshopで開いて編集します

  1. ファイルタイプキー内のShell\open\commandキーを開きます。例:
    HKEY_CLASSES_ROOT\Applications\customJEPG.cmd\Shell\open\command
  2. (デフォルト)値を編集して、ダミーの.cmdファイルではなくPhotoshop.exeを指すようにします。例:
    "E:\Tools\Adobe\Adobe Photoshop CC 2015\Photoshop.exe" "%1"
  3. Shellキーが存在しない場合はその中にedit\commandキーを作成します。例:
    HKEY_CLASSES_ROOT\Applications\customJEPG.cmd\Shell\edit\command
  4. (デフォルト)値を編集して、open\commandキーと同じ値になるようにします。例:
    "E:\Tools\Adobe\Adobe Photoshop CC 2015\Photoshop.exe" "%1"

6.デスクトップを更新します

デスクトップを更新するまで、何も変更されません。これを行うには3つの方法があります。

  • Windows 10では、ie4uinit.exe -showを実行します。 Windows 7および8では、ie4uinit.exe -ClearIconCacheを実行します。 (このヒントを提供してくれた @ Tony に感謝します。)
  • または、単にダウンロードして実行することもできます DesktopRefresh.exe
  • または、Explorer.exeを再起動できます。

    1. タスクマネージャーを起動します(ctrl + shift + esc)
    2. 詳細タブに移動し、Explorer.exeを見つけます
    3. Explorer.exe->タスクの終了を右クリックし、プロセスの終了をクリックします
    4. まだタスクマネージャーで、[ファイル]-> [新しいタスクの実行]に移動します
    5. Explorer.exeと入力し、[OK]をクリックします

7.テストします

  1. .jpgファイルに正しいアイコンが表示されるはずです。
  2. .jpgファイルをダブルクリックすると、Photoshopで開くはずです。
  3. .jpgファイルを右クリック-> [編集]をクリックすると、Photoshopで開きます。

「このファイルをどのように開きますか?」ウィンドウが再びポップアップし、上部の[このアプリを使用し続ける]でダミーの.cmdファイルが選択されていることを確認し、[常にこのアプリを使用して.jpgファイルを開く]をオンにして、[OK]をクリックします。

8.ダミーの.cmdを削除します

ダミーの.cmdファイルを削除できます。これはオプションです。


アイコンの検索に関する注意

多くの場合、アプリの.exeには複数のアイコンが含まれます。たとえば、Photoshop.exeには、サポートするさまざまなファイルタイプのすべてのアイコンが含まれています。これらのアイコンを見つけて使用する方法は次のとおりです。

  1. 右クリックして[ショートカットの作成]を選択し、.exeへのショートカットを作成します
  2. ショートカットを右クリックして、[プロパティ]を選択します
  3. 下部にある[アイコンの変更]ボタンをクリックします
  4. 次のようなウィンドウが表示されます(ただし、番号はありません)。
    icons Window
  5. アイコンには0から始まる番号が付けられています。使用するアイコンの番号を見つけます。カウントする代わりに、式(column - 1) * 4 + row - 1を使用できます。たとえば、アイコンが列6、行3にある場合、(6 - 1) * 4 + 3 - 1 = 22
  6. これで、次のように.exeへのパスに番号を含めることでそのアイコンを参照できます。
    C:\Example\Photoshop.exe,23
2
Mike

さて、 マイクの答え はとても良いです。また、補足として、手順6(デスクトップの更新)で次のコマンドを実行できます。

ie4uinit.exe -show

win10が新しいアイコンをリロードするため。

Win 7および8の実行の場合:

ie4uinit.exe -ClearIconCache
1
user888295