Registry - расширение ContextMenu .sdf файлов - PullRequest
0 голосов
/ 19 декабря 2011

Я хочу расширить контекстное меню баз данных sdf. мой текущий источник

    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;
        }
    }

Теперь, когда я открыл контекстное меню, ничего не произошло ... что идет не так?

1 Ответ

1 голос
/ 19 декабря 2011

Исходя из того, что вы сказали, контекстное меню открывается, но ничего не происходит, верно?

Если это так, похоже, вам нужно передать полный путь к файлу .sdf в командную строку вашего exe.

Обновите строковую переменную exe, чтобы она была такой:

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

, который пройдет по полному пути к SDF к вашему exe.

UPDATE:

После повторного исследования вам необходимо прочитать значение (по умолчанию) .sdk в HKCR. На моей машине это «Файл базы данных Microsoft SQL Server Compact Edition». Таким образом, вам нужно создать новый подраздел непосредственно под HKCR и поместить туда свои оболочки и командные подразделы. Проверьте .txt и .doc, чтобы увидеть пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...