Получить изображение пользователя - PullRequest
5 голосов
/ 05 февраля 2012

ОС: Win7x64 (2008,2008r2). Lang: Delphi Xe2.

enter image description here enter image description here

  1. Как получить полный путь (и имя файла) к изображению "картинка учетной записи пользователя"?
  2. Как установить новую картинку?

Пример на delphi plz.

Потребность: ... function GetCurrentUserPicture: string;

... функция GetUserPicture (UserName: String): строка;

... функция SetUserNewPicture (UserName, ImageFileName: String): bool;

Ответы [ 2 ]

11 голосов
/ 05 февраля 2012

Существует недокументированная функция в shell32.dll. В Windows XP его порядковый номер составляет 233, в Windows Vista и 7 - 261.

Прототип его функции ( от Airesoft ):

HRESULT WINAPI SHGetUserPicturePath (
    LPCWSTR pwszPicOrUserName, 
    DWORD sguppFlags, 
    LPWSTR pwszPicPath, 
    UINT picPathLen 
)

Вы можете использовать эту функцию для поиска пути, где хранится изображение пользователя. Просто передайте имя пользователя как pwszPicOrUserName, буфер, в котором вы хотите сохранить путь к изображению как pwszPicPath, а размер буфера в символах как picPathLen. Вы можете установить sguppFlags на 0 или на любой из других флагов возможных.

Существует также недокументированная функция, которую вы можете использовать для установки пользовательского изображения пользователя. Его порядковый номер 234 в Windows XP, 262 в Windows Vista и Windows 7.

Прототип его функции ( от Airesoft ):

HRESULT WINAPI SHSetUserPicturePath ( 
    LPWSTR pwszAcctName, 
    DWORD reserved, 
    LPCWSTR pwszPictureFile 
)

Передайте имя пользователя, чье изображение должно быть изменено как pwszAcctName, и путь к изображению, которое вы хотите установить как pwszPictureFile. Установите зарезервированное значение 0. Вы должны инициализировать COM до вызова этой функции.

Согласно Microsoft, вам не следует полагаться на недокументированные функции, поскольку они могут быть удалены или изменены любым исправлением, установленным в Windows.

4 голосов
/ 05 февраля 2012

Согласно MSDN :

В Windows 7 или более поздней версии каждому профилю пользователя соответствует изображение представлен как пользовательский тайл. Эти плитки отображаются для пользователей на пользователя Элемент панели управления учетными записями и его подстраница «Управление учетными записями». файлы изображений для гостевых учетных записей по умолчанию и учетных записей пользователей по умолчанию появляются здесь, если у вас есть права доступа администратора.

....

Изображение плитки пользователя сохраняется как C: \ Users \ \ Local \ Temp папка как .bmp. Любая косая черта символы () преобразуются в символы со знаком плюс (+). Например, ДОМЕН \ пользователь преобразуется в ДОМЕН + пользователь.

Я не смог найти API для получения изображения, и, поскольку в официальной документации есть подробности реализации, я думаю, это означает, что вы можете положиться на него. То есть я думаю, что это поддерживаемый способ получения мозаичного изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...