1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<#
  设置/更新本机密钥环境变量(值不落文件)—— 轮换 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)'