[英]C# Get user picture (Avatar)
我指的是C# - 如何获取当前的用户图片,但我从未找到过解决方案。 (我正在研究Win7 OS)
对于某些用户,图片位于
C:\\ Users \\用户名\\ 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 \\ <USER> \\ AppData ... \\ <USER> .bmp并返回其文件名。
另外,我在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('.'));
再一次,只是一个猜测。
PS:如果你看一下\\HKEY_USERS
,所有用户都有Volatile Environment
。 如果您想要特定用户,请遍历所有用户并在Volatile Environment
检查用户名( \\HKEY_USERS
的子键只是随机字符串,因此您必须查看内部)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.