我已经创建了新用户并为他设置了密码。
我也可以给他设置账户图片吗?
我搜索了以下地方:
新窗口样式:PC 设置 -> 帐户
中年 Windows 风格:控制面板 -> 用户帐户 -> 管理其他帐户
旧式 Windows NT 风格:管理工具 -> 计算机管理 -> 本地用户和组。
也许我来晚了,但进度已经提前了?也许他们已经为用户管理创建了第四个半功能小程序?
更新
注意,问题是关于如何设置不同用户的图片。因此,包括以新用户身份登录的方法不能被视为答案,因为一旦我以某个用户身份登录,我就不再是那个用户了。
正常的安全设置也不允许任何人以其他人的身份登录,即使是管理员。
答案1
没有用于设置不同特定用户图片的 UI,但您可以通过创建具有所有必要尺寸的图片版本并修改注册表以指向它们来实现。具体来说,每个用户的帐户图片都存储在此键下,如中所述另一个答案:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users
每个子项的名称是其指定图片的用户的 SID。每个子项都有一些Image###
条目,每个图像大小一个条目,例如Image32
,存储图像的完整路径。最新的 Windows 10 版本有 32、40、48、64、96、192、208、240、424、448 和 1080 像素的条目。当您使用设置应用创建帐户图片时,图像将存储在C:\Users\Public\AccountPictures
以您的 SID 命名的子文件夹中。每个人都应该可以读取这些文件。奇怪的是,子项和子文件夹都只允许单个管理员帐户而不是管理员组完全控制,因此写入它们需要在取得文件夹所有权之后调整 ACL。
为了自动化这个过程,我编写了一个基于此论坛帖子:
Param(
[string]$UserName,
[string]$PicturePath
)
# Get identifiers for path components
$sid = [System.Security.Principal.NTAccount]::new($UserName).Translate([System.Security.Principal.SecurityIdentifier]).ToString()
$pictureGuid = [guid]::NewGuid().ToString().ToUpper()
# Load the new image
Add-Type -AssemblyName System.Drawing
$picture = [System.Drawing.Image]::FromFile((gi $PicturePath).FullName)
# Create or gain access to the AccountPictures subfolder
$picturesFolder = Join-Path (Join-Path $env:PUBLIC 'AccountPictures') $sid
If (Test-Path $picturesFolder) {
Push-Location $picturesFolder
takeown /f . /a | Out-Null
icacls . /grant 'Administrators:(OI)(CI)F' | Out-Null
Pop-Location
} Else {
mkdir $picturesFolder | Out-Null
Push-Location $picturesFolder
icacls . /grant 'Everyone:(OI)(CI)R' | Out-Null
Pop-Location
}
# Create or gain access to the picture Registry key
$picturesKey = Join-Path HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users $sid
If (Test-Path $picturesKey) {
$keySubpath = "SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users\$sid"
$keyObject = [Microsoft.Win32.RegistryKey]::OpenBaseKey('LocalMachine', 'Registry64').OpenSubkey($keySubpath, 'ReadWriteSubTree', 'ChangePermissions')
$acl = $keyObject.GetAccessControl()
$acl.AddAccessRule([System.Security.AccessControl.RegistryAccessRule]::new('Administrators', 'FullControl', 'ContainerInherit', 'None', 'Allow'))
$keyObject.SetAccessControl($acl)
$keyObject.Dispose()
} Else {
mkdir $picturesKey | Out-Null
}
# Prepare the JPG encoder
$encoder = [System.Drawing.Imaging.ImageCodecInfo]::GetImageEncoders() | ? { $_.MimeType -eq 'image/jpeg' } | select -First 1
$encoderParams = [System.Drawing.Imaging.EncoderParameters]::new()
$encoderParams.Param[0] = [System.Drawing.Imaging.EncoderParameter]::new([System.Drawing.Imaging.Encoder]::Quality, 90)
# Create resized versions of the picture
(32, 40, 48, 64, 96, 192, 208, 240, 424, 448, 1080) | % {
$picturePath = Join-Path $picturesFolder "{$pictureGuid}-Image$_.jpg"
$resized = [System.Drawing.Bitmap]::new($_, $_)
$graphics = [System.Drawing.Graphics]::FromImage($resized)
$graphics.InterpolationMode = [System.Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
$graphics.DrawImage($picture, 0, 0, $_, $_)
$resized.Save($picturePath, $encoder, $encoderParams)
$resized.Dispose()
Set-ItemProperty $picturesKey -Name "Image$_" -Value $picturePath
}
它需要更改图片的用户的帐户名和图片的路径。图片可以是任何常见格式,但应该是正方形,因为它将被拉伸为正方形尺寸。脚本适当地配置文件夹和注册表项,创建图片的几个调整大小的版本,并将它们的路径写入注册表。更改通常会立即生效,但如果看不到它们,请重新启动。
要运行脚本,请将其保存为 PS1 文件,例如accountpicture.ps1
。如果还没有,请按照启用脚本部分中的说明进行操作PowerShell 标签 wiki。然后您可以从管理 PowerShell 提示符运行该脚本,如下所示:
.\accountpicture.ps1 -UserName newuser -PicturePath .\photo.png
答案2
我也可以给他设置账户图片吗?
以他的身份登录然后执行以下操作:
在 Windows 10 的“设置”应用中更改图片