MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Как задать програмно иконку бинарнику?"
Answer 929441
В Windows можно установить иконку для всех файлов определенного расширения, создав ключи в реестре:
using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; using System.Runtime.InteropServices; namespace ConsoleTest { class Program { const uint SHCNE_ASSOCCHANGED = 0x08000000; const uint SHCNF_IDLIST = 0x0000; [DllImport("shell32.dll")] static extern void SHChangeNotify(uint wEventId, uint uFlags, IntPtr dwItem1, IntPtr dwItem2); public static void SetIcon(string ext, string iconpath, string typename, string typedescr) { RegistryKey key; //связываем расширение с типом key = Registry.ClassesRoot.CreateSubKey(ext); using (key) { key.SetValue("", typename); } //задаем параметры для типа key = Registry.ClassesRoot.CreateSubKey(typename); using (key) { key.SetValue("", typedescr); RegistryKey subkey=key.CreateSubKey("DefaultIcon"); using (subkey) { subkey.SetValue("", iconpath); } } //обновляем кэш иконок проводника SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero); } static void Main(string[] args) { SetIcon(".item", "C:\\Program Files (x86)\\MyApp\\item.ico","binitem","Binary file"); Console.ReadKey(); } } }
Файл иконки должен находиться либо в папке Windows, либо в папке Program Files на том же разделе, что и Windows. Если файл лежит в других папках, может не сработать. Изменить иконки на уровне отдельных файлов можно только путем создания своего расширения для проводника.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.