Microsoft строго и неоднократно предупреждала об этой практике. Ресурсы в shell32.dll являются частной реализацией и могут быть изменены без предварительного уведомления. Предполагая, что вы хотите проигнорировать это: вы можете извлечь значки из него с помощью P / Invoking LoadLibrary (), чтобы получить дескриптор модуля, и LoadImage (), чтобы получить значок. К сожалению, конструктор Icon, который берет дескриптор, является приватным, вам придется использовать Reflection, чтобы вызвать его. Посетите pinvoke.net для объявлений.
Хотя все это работает, это не очень хороший код, который вам понравится поддерживать. Кстати, вынуть иконки из shell32.dll и поместить их в управляемый ресурс очень просто. В Visual Studio используйте Файл + Открыть + Файл и откройте shell32.dll. Вы получите список всех ресурсов, перейдите в узел Иконки. Дважды щелкните один, чтобы увидеть его содержимое, щелкните правой кнопкой мыши + Экспорт, чтобы сохранить его в файл. Не знаю, насколько это законно, сами значки не имеют уведомления об авторских правах, но shell32.dll, безусловно, делает. Вероятно, нет.