質問: windowsレジストリを使用したカスタムファイル拡張子の作成 さて、私はこれをしばらく読んでグーグルしていて、何が悪いのか理解できません。レジストリに.intファイル拡張子を作成して、shellnewキーを追加できるようにします。これにより、ファイル作成の単純な右クリック>新規>ファイルメソッドを実行できるようになります。そこで、hkey_classes_rootに移動し、.intというキーを作成しました。 次に、デフォルトのアイコンを使用してintfileというキーを作成し、その(デフォルトの)文字列を「ローカリゼーションファイル」に設定しました。次に、.intキーで(デフォルトの)intfileを設定し、プレーン/テキストに設定したコンテンツタイプを作成しました。次に、shellnewという新しいキーを作成し、そのキーでfilenameをwindows/shellnewのデフォルトの.intファイルがあったパスに設定しました。ただし、右クリックして[新規]に移動すると、[新しいローカリゼーションファイル]が表示されません。どこかにレジストリエントリがありませんか?以前に多くのキーにshellnewを追加し、常に問題なく機能していたため、これが機能しない理由を理解できません。まったく新しいファイル拡張子を作成するのはこれが初めてですが、存在する他のファイル拡張子を読んだのですが、なぜそれが機能しないのかわかりません。事前にもう一度タイします。編集:私が正確に設定したものの明確化。intfile: (default) reg_sz "localization file" intfile>shell>open>command: (default) reg_sz "c:\program files\notepad++\notepad++.exe" .int: (default) reg_sz "intfile" contenttype reg_sz "plain/text" percieved type reg_sz "text" .int>shellnew: (default) reg_sz "null" filename reg_sz "c:\windows\shellnew\new int.int"
回答: これは、ファイルタイプを正しく登録しなかった原因です。技術的には、「アプリケーション」を正しく登録していません。 http://msdn.microsoft.com/en-us/library/cc144148(v = vs.85).aspx#fa_register_type \.intを正しく登録しました。 _.int_はintfileを呼び出すように言います。 intfileただし、ファイルを処理するアプリケーションを配置する場所です。したがって、shellexはintfileを調べて、デフォルトフィールドの文字列だけを見つけます。したがって、操作は失敗します。そこに文字列が必要なので、実行するデフォルトの動詞をシェルに提供する必要があります。 intfileの下で、shell\open\commandを作成します。アプリケーションへのフルパスを入力します(例: "%programfiles%\ notepad ++\notepad ++。exe" "%1")。filenameは、コピーするファイルへのフルパスであるため、windowsではなく "%windir%が必要です。編集この方法を容認しているなんて信じられません。 。 。しかし、プログラムを書かずにこれを追加する方法はわかりません。 。 。edit2:さあ、行きます。キー_.int_にはdefault(sz) = intfileがあり、コンテキストタイプ(sz)= _plain.text_です。キー_.int_の下に、サブキーshellnewがあります。デフォルトは空である必要があります。新しい空の文字列(reg_sz)を作成し、ファイル名に入力された値: `c:\ windows\shellnew\newlocalizationfile '。intfileの下でデフォルトを_new localization file._にします二重引用符がないことに注意してください。ここで、intfileには次のサブキーが必要です:shell、デフォルト= openにします。次に、shellの下にサブキーopenを作成します。次に、openの下にサブキーcommandを作成します。プログラムのフルパスを引用符で囲んだ文字列の下に置きます。つまり、"c:\program files (x86)\notepad++\notepad++.exe" "%1"。 are二重引用符があることに注意してください。編集:3したがって、opが未知の問題に遭遇し、この方法で解決したようです。 hrm okはそれを理解しました!あなたはほとんど正しかった、そして私は少し正しかった。問題は、ファイルを一度開いて、ポップアップダイアログでデフォルトのプログラムをnotepad ++に設定したことでした。これにより、int_auto_fileというキーが作成されました。レジストリを調べて、非常に時間がかかり、.int拡張子へのすべての参照を削除しました。その後、私はそれらを再構築しました、そして今それは完全に機能します。