You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell写入注册表值时开头出现额外符号的解决方法求助

解决PowerShell写入注册表字符串开头多出隐形字符的问题

这坑我之前踩过!你遇到的问题根源在于-Value参数里的字符串藏了肉眼不可见的特殊Unicode字符——具体看你写的'‎02 ee 7f',开头的那个隐形字符大概率是零宽非断空格(U+200E)或者类似的格式控制字符,复制粘贴的时候从其他文档/网页带进来的,PowerShell会把它当成字符串的一部分原样写入注册表,就出现了莫名其妙的开头符号。

下面是具体的解决步骤:

1. 先确认隐形字符的存在

先运行这段代码,查看字符串的Unicode编码,就能揪出那个隐形字符:

$problemStr = '‎02 ee 7f'
$problemStr.ToCharArray() | ForEach-Object { Write-Host "字符: $_ | 编码: $([int]$_)" }

运行后你会看到第一个字符的编码不是数字或空格的ASCII码(比如200E),这就是罪魁祸首。

2. 最直接的解决:手动重新输入字符串

别复制原来的内容,手动敲一遍'02 ee 7f',确保没有带进来隐形字符,再运行你的脚本:

Push-Location
Set-Location HKCU:
New-ItemProperty -Path SOFTWARE\Microsoft\Office\16.0\Common\Security\Crypto\EscrowCerts -Name "EscrowCert01" -Value '02 ee 7f' -PropertyType "String"

3. 自动化清理:用正则过滤隐形字符

如果没办法手动输入(比如脚本是自动生成的),可以用正则表达式去掉所有非ASCII的隐形字符:

Push-Location
Set-Location HKCU:
$rawValue = '‎02 ee 7f'
$cleanValue = $rawValue -replace '[^\x00-\x7F]', '' # 只保留ASCII范围内的字符
New-ItemProperty -Path SOFTWARE\Microsoft\Office\16.0\Common\Security\Crypto\EscrowCerts -Name "EscrowCert01" -Value $cleanValue -PropertyType "String"

4. 验证结果

写完注册表后,用下面的命令检查值是否正常:

Get-ItemProperty -Path HKCU:\SOFTWARE\Microsoft\Office\16.0\Common\Security\Crypto\EscrowCerts -Name "EscrowCert01"

输出里的EscrowCert01值应该就是干净的02 ee 7f了。

补充说明

这种隐形字符通常来自网页、Word、PDF等带格式的文档,复制文本时会附带这些格式控制字符,PowerShell不会自动过滤,所以会原样写入。以后复制代码或字符串时,尽量用纯文本编辑器中转一下,避免带进来这类隐形字符。

内容的提问来源于stack exchange,提问作者imconnor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:48:40