如何生成Windows ProfileList下用户SID项对应的REG_BINARY类型SID值
ProfileList 注册表 REG_BINARY 类型 SID 值生成及域转本地用户修复方案
该 REG_BINARY 类型 SID 的生成规则
这个值不存在特殊自定义生成规则,就是你获取到的SID字符串对应的安全标识符对象的原始二进制形式:
- 你通过
([System.Security.Principal.WindowsIdentity]::GetCurrent()).User.Value拿到的是SID的可读字符串格式,直接转换为SecurityIdentifier对象即可导出对应的二进制字节数组。 - 单步获取二进制SID的代码为:
([System.Security.Principal.SecurityIdentifier]("替换为你的用户SID字符串")).GetBinaryForm()
迁移场景修复操作步骤
- 完成本地用户创建后,先获取该本地用户的SID字符串,存入变量
$localSID - 生成对应二进制SID值:
# 初始化SID对象 $sidObject = [System.Security.Principal.SecurityIdentifier]($localSID) # 申请对应长度的字节数组 $binarySID = New-Object Byte[] $sidObject.BinaryLength # 填充二进制SID内容 $sidObject.GetBinaryForm($binarySID, 0)
- 写入注册表对应位置:
$regPath = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$localSID" Set-ItemProperty -Path $regPath -Name "SID" -Value $binarySID -Type Binary
- 确认同注册表路径下的
ProfileImagePath值指向你要保留的原域用户配置文件夹,同时给该文件夹赋予本地用户的完全控制权限,重启设备后即可生效。
注意事项
- 操作前请先备份整个
ProfileList注册表项,避免配置错误导致系统登录异常 - 若此前手动修改过配置文件夹权限,需要确认继承规则正常,避免登录时出现临时配置文件问题
内容的提问来源于stack exchange,提问作者Eddie
相关产品推荐
相关产品推荐

