2009-11-12 6 views
8

自分のプロジェクト拡張をウィンドウレジストリに登録したい。 Googleで検索しましたが、少なくともこのコードが見つかりましたが、これはうまく機能しますが、1行はわかりません。 "%L"の意味は?ウィンドウレジストリにファイル拡張子を登録しますか?

C#のコードは私を混乱させるラインである

string ext = ".ext"; 
     RegistryKey key = Registry.ClassesRoot.CreateSubKey(ext); 
     MessageBox.Show(exePath); 
     key.SetValue("", "My Project"); 
     key.Close(); 

     key = Registry.ClassesRoot.CreateSubKey(ext + "\\Shell\\Open\\command"); 
     //key = key.CreateSubKey("command"); 

     key.SetValue("", "\"" + Application.ExecutablePath + "\" \"%L\""); 
     key.Close(); 

     key = Registry.ClassesRoot.CreateSubKey(ext + "\\DefaultIcon"); 
     key.SetValue("", Application.StartupPath + "\\icon.ico"); 
     key.Close(); 

key.SetValue("", "\"" + Application.ExecutablePath + "\" \"%L\""); 

で説明してください、私は事前にあなたに非常に感謝してい。

答えて

4

アプリケーションの実行可能ファイルは、Cである場合:

"C:\あなたPROGRAM.EXEあなたのディレクトリを\" の "%L"

あなたPROGRAM.EXE はラインがに変換され、\あなたのディレクトリを\

%Lは開いているファイルに変換されるので、プログラムはそのファイルを最初のパラメータとして実行しています

+0

あなたは%Lが私のオープニングファイルを取る種類のパラメータであることを意味します。 – qulzam

+0

あなたは私に非常に簡単な説明abtウィンドウレジストリを与えるオンラインソースを知ることができますか? – qulzam

+0

正確には、それは最終的にあなたのオープニングファイル – rossoft

1

%Lを理解するには、どのプログラムが読み込みを行うのかを理解する必要がありますレジストリ。

この場合、 `HKCR.ext \ shell * 'で指定された動詞は、拡張機能に関連するプログラムを起動するときにexplorer.exeによって読み込まれ、処理されます。

コマンドラインを作成するときにエクスプローラが探すものの明確なリストはないようです。ただし、%Lはエクスプローラに、プログラムの起動時にコマンドラインで長い形式のファイル名を受け入れるよう指示します。長いファイル名には空白を入れることができます。

これは、コマンドラインで長いファイル名を使用するプログラムではスペースを処理する必要があるため、エクスプローラはコマンドラインセパレータとして '、'を使用するか、コマンドラインでファイル名を引用符で囲まれています。

0

%Lは、アフィリエイトがプログラムを呼び出したファイルの "long name"です。最新のオペレーティングシステムでは、%1short name)と同じです。

関連する問題