2011-12-19 6 views
0

私はsdfデータベースファイルのコンテキストメニューを拡張します。 私の電流源レジストリ - .sdfファイルのContextMenu拡張

public static void Create() 
    { 
     string keyName = ".sdf"; 
     string contextName = "Das ist ein SDF Test"; 
     string exe = @"C:\Users\........exe"; 

     bool isWritable = true; 

     try 
     { 
      RegistryKey classesRoot = Registry.ClassesRoot; 
      RegistryKey parentKey = classesRoot.OpenSubKey(keyName, isWritable); 

      parentKey.CreateSubKey("shell"); 

      RegistryKey shell = parentKey.OpenSubKey("shell", isWritable); 
      RegistryKey context = shell.CreateSubKey(contextName); 
      RegistryKey command = context.CreateSubKey("command"); 
      command.SetValue("", exe); 
      classesRoot.Flush(); 
      classesRoot.Close(); 
     } 
     catch (Exception) 
     { 
      throw; 
     } 
    } 

は今、私はコンテキストメニューの何も起こっていない開いたときに... うまくいかないでしょうか?

+0

私はそれのようなものが必要であり、実際には以下の問題の解決方法を理解していません。あなたは働く機能を提供できますか?ありがとうございました – Jerome

答えて

1

あなたが言ったことに基づいて、コンテキストメニューが開きますが、何も起こりません。

この場合、.sdfファイルのフルパスをexeのコマンドラインに渡す必要があるようです。

だからあなたのexeファイルの文字列変数は、このように更新します。あなたのexeファイルにSDFへのフルパスを渡します

string exe = @"\"C:\Users\........exe\" \"%1\""; 

UPDATE:

再び研究した後、あなたが実際にHKCRに.sdkの(既定)値を読み込む必要があります。私のマシンでは、「Microsoft SQL Server Compact Editionデータベースファイル」です。したがって、新しいサブキーを直接HKCRの下に作成し、そこにシェルとコマンドのサブキーを配置する必要があります。例を見るには.txt.docを調べてください。

+0

私はmenuItem "Das ist ein SDF Test"が表示されません。ファイル拡張子.sdfの下にシェルキーを作成するのは正しいですか? – Gepro

+0

実際には、代わりに何をするかを示すように更新しました。 –

+0

はい、それです!それはうまく動作します。 – Gepro

関連する問題