Для текущего пользователя и ЛЮБОГО пользователя в экземпляре Microsoft Windows для этого есть пакет NuGet (и здесь идет бесстыдный плагин):
https://github.com/HTD/Woof.System
Для тех, кто заинтересованв исходном коде и задействованной магии voodoo.
Для тех, кто заинтересован в том, чтобы просто заставить его работать, используйте пакет NuGet Woof.System, затем используйте функцию, подобную этой:
Получите небольшую текущую битовую карту пользователя для WPF:
var userBitmapSmall = new BitmapImage(new Uri(SysInfo.GetUserPicturePath()));
Получите маленькое ДРУГОЕ пользовательское растровое изображение для WPF:
var userBitmapSmall = new BitmapImage(new Uri(SysInfo.GetUserPicturePath("John")));
Получите маленькое и БОЛЬШЕ ЛЮБОЕ пользовательское растровое изображение для WPF:
var smallBitmapPath = SysInfo.GetUserPicturePath("John", out var largeBitmapPath);
var smallBitmap = new BitmapImage(new Uri(smallBitmapPath));
var largeBitmap = new BitmapImage(new Uri(largeBitmapPath));
Решение, содержащееся в библиотеке, основано на недокументированных Shell32.dll
вызовах, присутствующих в Windows Vistaи более новые и недокументированные ключи реестра, присутствующие в Windows 8 и более поздних версиях.
Как получить фотографию профиля пользователя, вошедшего в учетную запись Microsoft, - мое собственное открытие, я нигде не нашел решения, вероятно, это мило Microsoftсекрет.
Что важно, решение, которое можно найти, во многих отношениях является неполным:
- без Win32 API: изображение профиля пользователя может отсутствовать во временном каталоге, может быть удалено, недоступно для чтения обычным пользователем.
- без использования недокументированного ключа реестра и недокументированных функций API Win32, которые могут получить изображение профиля для MicrosoftУчетная запись пользователя невозможна.
Если вы обнаружите какие-либо ошибки или несовместимость в этом решении, откройте проблему на GitHub.
Протестировано с несколькими версиями Windows 10 (стабильная версия и разработчики).строить).Я протестировал его с локальными и учетными записями Microsoft.
Кстати: если имя пользователя не существует, метод возвращает путь к изображению профиля «по умолчанию».
ПРИМЕЧАНИЕ. Пакет зависит от.NET Framework и несовместим с .NET Core и .NET Standard из-за сильной зависимости от Win32 API (и, следовательно, не кросс-платформенной).Существуют и другие библиотеки Woof, совместимые с .NET Standard.Они кажутся недокументированными, однако содержат документацию XML, доступную для Visual Studio, а исходный код на GitHub позволяет выяснить, как они работают.Библиотеки Woof находятся в постоянной активной разработке, поэтому это безопасный выбор.