如何在c#中获取登录用户的图像?感谢
答案 0 :(得分:4)
每个操作系统都无法做到这一点;但是在有可能的OS上:
对于Windows Vista或更高版本:
该图片位于 C:\ Users \用户名\应用程序数据\本地\ TEMP \ UserName.bmp
如果用户是域用户,则为"DOMAIN+UserName.bmp"
(是的,'+'是文件名的一部分)
答案 1 :(得分:1)
尝试Ths ::
public static Image GetUserimage()
{
if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)+@"\Temp\"+Environment.UserName+".bmp"))
{
return Image.FromFile(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) + @"\Temp\" + Environment.UserName + ".bmp");
}
else
{
return null;
}
}
答案 2 :(得分:1)
尝试使用Windows 10
用户图片位于 C:/ users / username / appdata / romaing / microsoft / windows / account pictures /
答案 3 :(得分:0)
答案 4 :(得分:0)
对于当前用户以及Microsoft Windows实例上的任何用户,都有一个NuGet程序包(这里是无耻的插件):
https://github.com/HTD/Woof.System
对于那些对源代码和伏都教魔术感兴趣的人。
对于那些只想使其工作感兴趣的人,请使用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));
该库中包含的解决方案基于Windows Vista中存在的未记录的Shell32.dll
调用以及Windows 8及更高版本中存在的更新和未记录的注册表项。
如何获取使用Microsoft帐户登录的用户的个人资料图片是我自己的发现,我在任何地方都找不到解决方案,这可能是Microsoft的甜蜜秘密。
重要的是,可以用Google搜索的解决方案在许多方面都不完整:
如果在此解决方案中发现任何错误或不兼容,请在GitHub上打开一个问题。
经过Windows 10几个版本(稳定和开发人员构建)的测试。 我用本地帐户和Microsoft帐户进行了测试。
顺便说一句:如果用户名不存在,该方法将返回“默认”个人资料图片的路径。
注意:该软件包依赖于.NET Framework,并且由于对Win32 API的高度依赖(因此不能跨平台)而与.NET Core和.NET Standard不兼容。还有其他与.NET Standard兼容的Woof库。它们似乎没有文档记录,但是它们包含可用于Visual Studio的XML文档,并且GitHub上的源代码允许弄清楚它们的工作方式。 Woof库正在不断地积极开发中,因此这是一个安全的选择。