Зарегистрировать расширение файла в окне реестра? - PullRequest
8 голосов
/ 12 ноября 2009

Я хочу зарегистрировать свое собственное расширение проекта в реестре окон. Я искал в Google, по крайней мере, я нашел этот код, он работает хорошо, но я не понимаю одну строку. Что означает «% 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\"");

Пожалуйста, объясните, я очень благодарен вам заранее.

Ответы [ 3 ]

4 голосов
/ 12 ноября 2009

Если исполняемый файл приложения находится в C: \ your dir \ your program.exe строка переводится на:

"C: \ your dir \ your program.exe" "% L"

% L переводится в открываемый файл, поэтому ваша программа выполняет этот файл в качестве первого параметра

1 голос
/ 12 ноября 2009

Чтобы понять% L, вам нужно понять, какая программа будет выполнять чтение из реестра.

В этом случае глаголы, указанные в `HKCR.ext \ shell * ', читаются и обрабатываются explorer.exe при запуске программ, связанных с расширениями.

Похоже, нет окончательного списка того, что ищет проводник при создании командной строки. Однако% L сообщает исследователю, что программа, которую она запускает, примет длинную форму имени файла в командной строке. и длинные имена файлов могут содержать пробелы.

Именно поэтому программы, которые принимают длинные имена файлов в командной строке, должны иметь возможность обрабатывать пробелы - проводник делает это сам, используя ',' в качестве разделителя командной строки или позволяя включать имена файлов в командной строке в кавычках.

0 голосов
/ 12 ноября 2009

%L - это " длинное имя " файла, ассоциация которого вызвала вашу программу. В современных операционных системах оно идентично %1 ( короткое имя ).

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