获取用户图片(头像)
本文关键字:头像 用户 获取 | 更新日期: 2023-09-27 18:07:01
我指的是c# -如何获得当前用户图片,但我从来没有找到一个解决方案。(我在Win7操作系统上工作)
对于某些用户,图片位于
C: ' '用户名' AppData '用户本地' Temp ' UserName.bmp
(其中UserName是用户昵称)对于其他用户,此路径抛出FileNotFoundException,但图片存在
我在哪里可以找到路径或真实图片的信息?是否存在包含此信息的注册表?
这篇博文展示了如何设置用户平铺(图片)。在接近结尾的评论中(迈克尔·安东尼,4月10日,22:45),评论者描述了如何得到这张照片。我将这些信息收集到一个c#代码片段中。请记住,这是基于一个未记录的Windows Shell函数。
using System;
using System.Text;
using System.Drawing;
[DllImport("shell32.dll", EntryPoint = "#261",
CharSet = CharSet.Unicode, PreserveSig = false)]
public static extern void GetUserTilePath(
string username,
UInt32 whatever, // 0x80000000
StringBuilder picpath, int maxLength);
public static string GetUserTilePath(string username)
{ // username: use null for current user
var sb = new StringBuilder(1000);
GetUserTilePath(username, 0x80000000, sb, sb.Capacity);
return sb.ToString();
}
public static Image GetUserTile(string username)
{
return Image.FromFile(GetUserTilePath(username));
}
注意这个Shell函数创建文件'Users'
我也在Win7上测试过。我不知道它与以前的Windows版本是否兼容。
感谢Joco和Michael Anthony。
我在'HKEY_CURRENT_USER'Volatile Envirnment
找到了相关信息,但没有找到确切的路径。
我猜头像总是在C:'Users'UserName'AppData'Local'Temp'
,文件名本身可以从这个算法中找到:
// Note that $XYZ$ means 'HKEY_CURRENT_USER'Volatile Envirnment'XYZ
if $USERDOMAIN$ = "" then
return $USERNAME$.Substring(0, $USERNAME$.IndexOf('.'));
else
return $USERDOMAIN$ + "+" + $USERNAME$.Substring(0, $USERNAME$.IndexOf('.'));
再一次,只是猜测。
注:如果你看'HKEY_USERS
,所有用户都有Volatile Environment
。如果您想要一个特定的用户,遍历所有用户并在Volatile Environment
中检查用户名('HKEY_USERS
的子键只是随机字符串,因此您必须查看内部)。