Короче говоря, я ищу улучшенные фотореалистичные значки, которые используются в папке панели управления «Устройства и принтеры».
Я полагаю, что мог бы использовать оболочку Windows для их перечисления, но у меня нет пакета оболочки, связанного с моим проектом .NET, и я вроде как думаю, что это обман (LOL идет сюда, в зависимости от того, хотите ли вы ценю один).
Большая часть той скудной документации, которую я нашел относительно доступа к этим файлам вне оболочки, находится по пути "% LOCALAPPDATA% \ Microsoft \ Device Metadata \ dmrccache"
За исключением того, что я использую Windows 8.1 Pro, и этот каталог не существует. Я нашел каталог под названием "C: \ Users \ Nathan \ AppData \ Local \ Microsoft \ Device Stage \ Device \ {8616C787-FB4C-4B21-A2FE-D263F0DC4DA5} \ en-US"
Кажется, здесь хранятся изображения для моего многофункционального принтера Brother, но я не могу найти подобных папок для других устройств. Не говоря уже о том, что ключ GUID, {8616C787-FB4C-4B21-A2FE-D263F0DC4DA5}, вообще не найден в реестре и не связан с какими-либо свойствами устройства, которые я могу найти связанными с устройством принтера ... Также у устройства принтера нет ключа свойства для файла метаданных устройства (говорит, что ключ не существует, хотя вся остальная информация об устройстве заполняется, просто отлично).
Я посмотрел на MSDN, и в нем все рассказывается о том, как создать СОБСТВЕННЫЙ этап устройства и расширенные метаданные XML значков для развертывания устройства, но почти нет документации о том, как это переварить в Windows.
Я хорошо знаком и компетентен в работе с большинством функций SetupDiXXXXXX и создал свои собственные перечислители оборудования на основе .NET и классы, обернутые вокруг этих функций.
Но сейчас я не могу найти документации, касающейся моей проблемы. Единственное решение "быстрого исправления" - это взять значки из перечисления оболочки файла устройств и принтеров ...
Но мне бы очень хотелось более глубокого понимания внутренней работы этой проблемы, и прохождение через COM-интерфейсы оболочки не является моим первым выбором решения (я действительно работаю с функциями API оболочки C, но довольно немного, и если кто-то может дать ответ по этому поводу, я весь уши).
Кроме того, я хотел бы знать, почему и если уровень этапа устройства каким-то образом изменился с Windows 7 на Windows 8, и почему ничего из этого не задокументировано.
Дополнение
Я был бы не против использования извлечения значка оболочки, если бы мог выяснить, как получить имя самого файла, вычислив его, если оно вообще существует, в подобном каталоге.
Чтобы добраться до устройств и принтеров, волшебное имя:
::{26EE0668-A00A-44D7-9371-BEB064C98683}\0\::{A8A91A66-3A7D-4424-8D24-04E180695C7A}
Если вы вставите его в панель браузера Explorer, он перенесет вас туда. Если можно получить информацию для прикрепления к этому пути, я могу использовать вызов оболочки C для получения значка.
Но попытка ID экземпляра принтера не сработала (работает с сетевой папкой).
Я даже не знаю, возможно ли это в такой папке.
Тем не менее, я хотел бы узнать больше о том, как просто пойти и самому найти эти вещи.