2011-12-19 2 views
0

sdf database-files의 contextmenu를 확장하고 싶습니다. 내 전류 소스Registry - .sdf 파일의 ContextMenu 확장자

내가 열 때 이제하려면 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 "SDF Test"를 볼 수 없습니다. 파일 확장자 .sdf 아래에서 셸 키를 만드는 것이 맞습니까? – Gepro

+0

사실, 대신에해야 할 일을 보여주기 위해 업데이트되었습니다. –

+0

예, 그게 전부입니다! 그것은 잘 작동합니다. – Gepro