<#
|
设置/更新本机密钥环境变量(值不落文件)—— 轮换 DeepSeek key 后跑这个
|
用法:powershell -NoProfile -ExecutionPolicy Bypass -File set-secrets.ps1
|
(回车跳过某一项,表示不改)
|
#>
|
$ErrorActionPreference = 'Stop'
|
|
function Read-Secret([string]$prompt) {
|
$sec = Read-Host -Prompt $prompt -AsSecureString
|
if ($null -eq $sec) { return '' }
|
$bstr = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($sec)
|
try { return [Runtime.InteropServices.Marshal]::PtrToStringBSTR($bstr) }
|
finally { [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($bstr) }
|
}
|
|
foreach ($name in @('DEEPSEEK_API_KEY', 'TRAFFIC_DB_PASSWORD')) {
|
$cur = [Environment]::GetEnvironmentVariable($name, 'User')
|
$hint = if ($cur) { '(已设置,长度 ' + $cur.Length + ')' } else { '(当前未设置)' }
|
$val = Read-Secret ("输入 " + $name + " " + $hint + ",直接回车跳过")
|
if ([string]::IsNullOrWhiteSpace($val)) { Write-Host (" 跳过 " + $name); continue }
|
& setx.exe $name $val | Out-Null
|
if ($LASTEXITCODE -eq 0) {
|
[Environment]::SetEnvironmentVariable($name, $val, 'Process')
|
Write-Host (" 已更新 " + $name)
|
} else {
|
Write-Host (" 更新失败:" + $name)
|
}
|
}
|
Write-Host ''
|
Write-Host '完成。生效方式:新开的终端自动带上;用 start-dev.ps1 启动也会自动从注册表载入。'
|
Write-Host '(若后端正在运行,请重启后端:停掉 8090 进程后重新执行 start-dev.ps1)'
|