Можно ли установить значок для приложения, зарегистрированного в OpenWith?

832
Axeman

Существуют ли другие пользовательские параметры реестра для элементов Open With?

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


Отвечая на запрос о сбросе ключа реестра, вот он (анонимный):

C:\>reg query "HKCR\Applications\scriptapp.exe" /s  HKEY_CLASSES_ROOT\Applications\scriptapp.exe (Default) REG_SZ ScriptApp  HKEY_CLASSES_ROOT\Applications\scriptapp.exe\DefaultIcon (Default) REG_EXPAND_SZ C:\Util\icos.dll,1  HKEY_CLASSES_ROOT\Applications\scriptapp.exe\shell  HKEY_CLASSES_ROOT\Applications\scriptapp.exe\shell\open DefaultIcon REG_SZ C:\Util\icos.dll,1 FriendlyAppName REG_SZ ScriptApp  HKEY_CLASSES_ROOT\Applications\scriptapp.exe\shell\open\command (Default) REG_SZ "C:\Util\strawberry\perl\bin\wperl.exe" "c:\Util\Scripts\launch_master.pl" 
1
Вы имеете в виду взлом реестра, как в [этой статье] (http://msdn.microsoft.com/en-us/library/windows/desktop/hh127427%28v=vs.85%29.aspx)? Если нет, что вы видите в regedit под записью HKEY_CLASSES_ROOT для вашего элемента Open With? harrymc 9 лет назад 0
@harrymc, это связано с присвоением * типу файла * иконки. Я хочу знать, могу ли я установить значок в списке или диалоге OpenWith. Поскольку интерпретатор сценария является исполняемым файлом, я просто получаю значок интерпретатора. Axeman 9 лет назад 0
Вы хотите изменить значок переводчика? Вы можете добавить значок в его exe, используя [Resource Hacker] (http://angusj.com/resourcehacker/). Смотрите также [эта статья] (http://www.wikihow.com/Change-the-Icon-for-an-Exe-File). Размещение значка в качестве первого сделает его по умолчанию. harrymc 9 лет назад 1
Вы пытались установить DefaultIcon, как описано в следующей статье? [Регистрация приложения] (http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121%28v=vs.85%29.aspx) and31415 9 лет назад 0
@ and31415, классная статья, но, похоже, не сработало. Axeman 9 лет назад 0
Похоже, документация не совсем корректна / актуальна. Например, начиная с Windows XP, значение реестра `FriendlyAppName` необходимо поместить в подраздел` shell \ open` для работы. Я попытался с помощью [Process Monitor] (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) проверить, читается ли ключ `DefaultIcon`, но это не так. Не могли бы вы опубликовать вывод команды `reg query" HKCR \ Applications \ interpreter.exe "/ s`, на всякий случай? and31415 9 лет назад 0
Попробуйте сбросить кэш иконок (завершите задачу explorer.exe, удалите `IconCache.db`, ​​запустите explorer.exe) Jason 9 лет назад 0
@ Джейсон, не повезло. Благодарю. Axeman 9 лет назад 0
Пожалуйста, ответьте на мой второй комментарий. harrymc 9 лет назад 0
@harrymc, я не хочу менять значок интерпретатора сценариев, который кажется излишним. Axeman 9 лет назад 0

3 ответа на вопрос

2
harrymc

I believe that the only way to change the icon that is displayed on the OpenWith executable, is to change that icon inside that executable (or add one).

You can add an icon to its exe using Resource Hacker.
For details, see the article : Windows 7: Icons - Change Using Resource Hacker.

Placing the new icon as first will make it the default.


Another idea would be to assign different file-types to your scripts, for example .my1 for script1.my1 and .my2 for script2.my2, and give each file-type a different icon, as described in this article.

Define all file-types as executing "\path\interpreter.exe %1" where %1 stands for the script parameter.

That will give you a different icon per each script file-type, and you will not need at all the OpenWith dialog box - just double-click the script-file. The script-files will automatically be displayed in Explorer with their icons.

If the Windows file-types tool is unwieldy, you could use FileTypesMan.
You can also load such file-types directly into the registry with a .reg file.

Я надеялся на отличный способ, для которого я просто не мог найти документацию. Иконка переводчика не беспокоит меня так сильно, что я не могу с этим жить. Пока у этого есть название, которое я хотел, который это делает. Axeman 9 лет назад 0
Я добавил еще одну идею выше. harrymc 9 лет назад 0
1
Jason

Нет, вы не можете изменить значок в «Открыть с помощью».

Ключ HKEY_CLASSES_ROOT\Applications\scriptapp.exe\DefaultIconдля изменения значка файлов, связанных с scriptapp.exe.

Создание значения DefaultIconв HKEY_CLASSES_ROOT\Applications\scriptapp.exe\shell\openне поддерживается.

Как предлагали другие, если это необходимо, вы должны изменить значок для scriptapp.exe.

Там нет `scriptapp.exe`. Это просто запись в разделе «Приложения», так что я могу использовать Perl-скрипт в качестве записи OpenWith. Это потребовало бы от меня изменения иконки для Perl, и вся идея заключалась в том, чтобы развернуть больше сценариев под названием «OpenWith Apps». Axeman 9 лет назад 0
@Axeman То, что я сказал, все еще применимо. Поскольку это невозможно, возможно, вы могли бы объяснить больше вашей ситуации. Я уверен, что сообщество может помочь вам найти лучший путь. Jason 9 лет назад 0
Я надеялся на отличный способ, для которого я просто не мог найти документацию. Иконка переводчика не беспокоит меня так сильно, что я не могу с этим жить. Пока у этого есть название, которое я хотел, который это делает. Axeman 9 лет назад 0
0
crazypotato

Нет scriptapp.exe. Это просто запись в разделе «Приложения», так что я могу использовать Perl-скрипт в качестве записи OpenWith. Это потребовало бы от меня изменения иконки для Perl, и вся идея заключалась в том, чтобы развернуть больше сценариев под названием «OpenWith Apps».

Понятия не имею, что это значит и зачем это нужно.

Вероятно, вам нужно скомпилировать скрипт .pl в .exe с PP и со значком опции . Больше информации

Я также могу написать небольшой скрипт AHK (Autohotkey) для инкапсуляции командной строки и компиляции ее с помощью компилятора. Но цель состояла в том, чтобы увидеть, как далеко я могу пойти в создании «Приложения» с помощью только интерпретатора, сценария и некоторой конфигурации. Каждый сценарий будет отдельным «приложением». Axeman 9 лет назад 0