7

私はそれを行う方法を取得し、以前にhttp://www.codeproject.com/KB/vb/VBFileAssociation.aspxに行ったことがあります。私の質問は、それが何をするかについてです。それを元に戻すことは可能ですか? プログラムがどこにあるのかわからず、今のところテストしているだけの場合はどうなりますか? プログラムを「見つける」方法、または開いている場所を編集する簡単な方法はありますか? さらに言えば、ファイルが既に関連付けられているかどうかを確認することは可能ですか?再関連付けを試みるのは問題ですか? 最後に、使用する .ico ファイルをどのように設定できますか?

助けてくれてありがとう、私はレジストリについてほとんど何も知らないので、混乱します笑...

4

1 に答える 1

18

簡潔にするために、偽のルート キーを使用しています。Hive_Key実際にはHKEY_LOCAL_MACHINE、システムのデフォルト設定またはHKEY_CURRENT_USERユーザーごとの設定の場合は に置き換えます。これらのキーのいずれか、または両方の存在が許可されます。両方が存在する場合は、HKCUキーが優先されます。

拡張子をファイルの種類に関連付けるには、既定のキー値を設定して、選択したファイルの種類に拡張子キー ( Hive_Key\Software\Classes\.ext) の既定値を設定する必要があります。

起動された実際のプログラムとその他のファイル タイプの詳細は、ファイル タイプに含まれています。ファイルの種類は、ProgID("Programmatic Identifier" の略で、Class Identifier のより読みやすいバージョンです) と呼ばれるものによって示されます。ProgID キーは にHive_Key\Software\Classesあり、この図の値の例はext_auto_key.

ProgID には既定値が設定されている場合があります。これは、エクスプローラーでのファイルの種類のわかりやすい説明 ("Microsoft Word ドキュメント" など) になります。ユーザーにとってわかりやすい説明を選択するかどうかは、開発者次第です。

ProgIDDefaultIconには、ファイルの種類のアイコンが格納されているサブキー がある場合があります。そのアイコン パスは、そのキーのデフォルト値です。

shellProgID キーは、ファイルのコンテキスト メニュー項目と、そのコンテキスト メニュー項目が呼び出すプログラムを含むサブキーである場合があります。ProgID のデフォルト値と同様に、動詞キーのデフォルト値は、コンテキスト メニューに表示されるテキストです。このshellキーのデフォルト値には、デフォルトの動詞キー名があります。これは、ユーザーがファイルをダブルクリックしたときに呼び出される動詞です。

これらのコンテキスト メニュー項目はVerbs. この例では、メモ帳でファイルを開く動詞は次のようになり Hive_Key\Software\Classes\ext_auto_file\shell\open\commandますnotepad.exe %1

これは、プログラム パスを配置する場所です。notepad.exe のように、プログラムがシステム PATH にある場合は、フル パスを指定する必要はありません。より可能性の高いケースでは、exe へのパスを指定する必要があります。テスト目的で、それをビルド ディレクトリに設定することができます。

この内容を確認する方法を尋ねましたが、これは、最初に拡張キーのデフォルト値を調べて ProgID を取得し、次にshellProgID キーのサブキーを調べてデフォルトの動詞を取得し、次に調べ\shell\verb\commandてプログラムへのパスを取得することで実行できます。立ち上げました。

これらのレジストリ キーを開いてregedit.exe、他のファイル タイプのレジストリ キーを参照して、すべてがどのように機能するかを理解することをお勧めします。

また、特定の拡張機能が、コントロール パネルで既定として設定されているプログラム (既定のプログラム) の制御下にない場合、上記はすべて有効です。このステータスは、キーの存在を確認することで確認できますHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ Explorer\FileExts\.EXT\UserChoice。そうである場合、カスタマイズを有効にする前に、既定のプログラム コントロールを無効にする必要があります。UserChoiceこれは、そのサブキーを削除することで実行できます。

于 2009-10-12T23:12:39.167 に答える