1

シェル コンテキスト メニューのカスタマイズ方法について多くの質問が寄せられることは承知していますが、私が試したことがまだうまくいかないため、新しい質問を追加します。

.log ファイル (メモ帳) に関連付けられている既定のアプリケーションを変更せずに、ユーザーがカスタム アプリケーションを選択して開きます。

これを行うために、レジストリ キーを開き、HKEY_CLASSES_ROOT\.logいくつかのキーに正しい値を追加しましshell\OpenWithLogViewer\commandたが、拡張子が .log のファイルを右クリックしてもエントリが表示されません。

これを修正する方法を教えてください。

キーHKEY_CLASSES_ROOT\.logのデフォルト値txtfileは で、サブキーはPersistentHandlerです。このサブキーが問題の原因である可能性はありますか?

4

2 に答える 2

1

別のレジストリ キー (例: ) を追加し、そのキーの下に構造HKEY_CLASSES_ROOT\logfileを作成して、キーshellの既定値を に変更します。これを行う 1 つの方法は、次の行をファイルに保存し、そのファイルをレジストリにマージすることです。.loglogfile.reg

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.log]
@="logfile"

[HKEY_CLASSES_ROOT\logfile]

[HKEY_CLASSES_ROOT\logfile\shell]
@="OpenWithLogViewer"
; make OpenWithLogViewer the default action

[HKEY_CLASSES_ROOT\logfile\shell\OpenWithLogViewer]
@="Open with &Log Viewer"
; set label and access key

[HKEY_CLASSES_ROOT\logfile\shell\OpenWithLogViewer\command]
@="\"C:\\path\\to\\logviewer.exe\" %1"


logfileこれにより、型 ( ) が拡張子 ( ) から分離され.logます。こうすることで、タイプの可能なアクションを 1 か所で定義し、任意の拡張機能をそのタイプに関連付けることができます。

HKEY_CURRENT_USER\Software\Classesの代わりに を使用して、ユーザーごとにこれを定義することもできますHKEY_CLASSES_ROOT。ユーザー エントリは、システム エントリよりも優先されます。これは、ファイルの関連付けを変更したり、独自のユーザーのカスタム アクションを追加したりしたいが、システムの管理者権限を持っていない場合に便利です。

于 2014-01-04T13:13:16.497 に答える
1

自分が「所有」していないファイル拡張子のエントリを追加したい場合や、既定のアクションにしたくない場合は、SystemFileAssociationsキーを使用できます。

[HKEY_CLASSES_ROOT\SystemFileAssociations\.log\shell\mycommand]
@="My Command"

[HKEY_CLASSES_ROOT\SystemFileAssociations\.log\shell\mycommand\command]
@="\"c:\\path\\myapp.exe\" \"%1\""

既定のプログラムへの変更の結果に積極的に対処するために、HKEY_CLASSES_ROOT\SystemFileAssociations を使用して動詞やその他の関連付け情報を登録できます。関連配列内の ProgID の後に位置するため、これらの登録は優先度が低くなります。これらの SystemFileAssociationsregistrations は、ユーザーが既定のプログラムを変更した場合でも安定しており、特定のファイルの種類に対して常に使用できるセカンダリ動詞を登録する場所を提供します。

このキーは、Windows XP 以降で使用できます...

于 2017-03-24T13:40:57.130 に答える