5

Я хочу добавить пользовательские параметры контекстного меню для определенных расширений файлов (таких как .zip-файлы) для программы, которую я разрабатываю. Однако на многих (но не на всех) ПК будет установлено мое программное обеспечение на 7-Zip, и поэтому [HKEY_CLASSES_ROOT.zip] ссылается на [HKEY_CLASSES_ROOT\7-Zip.zip] в реестре.

Поскольку я не хочу вмешиваться в первоначальную установку 7-Zip, я просто хочу добавить свои параметры контекстного меню сверху. Однако записи в [HKEY_CLASSES_ROOT.zip\shell] не имеют никакого эффекта, и я не знаю, как я мог связать [HKEY_CLASSES_ROOT.zip] с [HKEY_CLASSES_ROOT\MyApp.zip], потому что значение по умолчанию [HKEY_CLASSES_ROOT.zip] уже используется по 7-молния.

Любая помощь будет принята с благодарностью :)

3 ответа3

1

Если файлы .zip являются вашей единственной задачей, вы можете смело использовать клавишу [HKEY_CLASSES_ROOT\CompressedFolder] .

Это связано с тем, что Windows изначально использует этот ключ для своей функциональности, связанной с .zip , а сторонние программные продукты (включая 7zip) в основном стремятся поделиться этим ключом с Microsoft. Это позволяет разработчикам добавлять свои собственные функциональные возможности, сохраняя при этом собственную «папочную» обработку Windows .zip файлов.

Странно, однако, что ваше значение [HKEY_CLASSES_ROOT\.zip] умолчанию ссылается на [HKEY_CLASSES_ROOT\7-Zip.zip] . Еще возможно, что даже в этих старых версиях установлены правильные записи [HKEY_CLASSES_ROOT\CompressedFolder] - вам придется проверить.

0

Из того, что я наблюдаю на моем компьютере, вы можете безопасно "взломать" расширение .zip .

Я установил WinZip до 7Zip, поэтому именно WinZip взял расширение .zip , а 7Zip оставил его в покое.

Тем не менее, 7Zip по-прежнему отлично работает для меня .zip файлов, потому что он также устанавливает общее расширение для всех типов файлов, которые действительно ловят .zip файлы (среди прочих).

Фактически, по моему мнению, 7Zip, взявший на себя расширение .zip является излишним.

-3

Хорошо, я постараюсь сказать это простым способом .. Сначала в HKCR создайте ключ для вашей программы. (Подсказка, просто скопируйте и переименуйте один ..) Требуется минимум 3 части. CFG.File\shell\Open\command (по умолчанию) "% 1"

3: ProgID В моем примере это CFG.File Action В моем примере это команда Shell для открытия (и вы добавляете «% 1» для включения вашего объекта)

Далее вам нужно создать, если он не существует, этот ключ для типа файла OpenWithProgids, теперь вот подсказка: также создайте ключ из OpenWithProgids, называемый Shared

Ключ Shared сообщает Windows, что ни один ProgID не может получить контроль или стать по умолчанию.

Теперь все, что вам нужно, это добавить свой ProgID, который вы сделали в HKCR. Добавить его имя в OpenWithProgids. Вы можете выбрать: либо двоичную запись, либо странную строку. Вам нужно только назвать его, а не значение.

Я не охватил все опции для пользовательского интерфейса и Eye Candy, но я должен добавить это в качестве заключительной мысли: если тип файла или какой-либо ключ имеет запись EditFlags - переименуйте ее, или ваши модификации никогда не будут отображаться ...

О, последний совет: если у вас возникают проблемы при попытке изменить значок типа файла, посмотрите под ключом ShellEx и посмотрите, есть ли у него ключ DefaultIcon. Эти типы файлов защищены Windows. Если вы измените или удалите запись, Windows 'будет сбрасывать ее при каждой перезагрузке. (Если вы не захватите право владения всем ключом, то запретите TI и доступ системы к владельцу изменений или разрешениям на изменение.

Удачи, сэр!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .