【问题标题】:Setting Environemnt Type to reg_expand_sz using powershell使用 powershell 将环境类型设置为 reg_expand_sz
【发布时间】:2012-07-02 21:43:50
【问题描述】:

我陷入了一个问题。我正在尝试使用 PowerShell 设置用户环境变量:

[Environment]::SetEnvironmentVariable($key,$value,'User')

但是当我查看注册表时,我可以看到新条目的类型是 REG_SZ

我希望它是 REG_EXPAND_SZ 类型。

有人可以帮我解决这个问题吗?

谢谢

【问题讨论】:

  • 顺便说一句,您应该使用双引号来分隔您的 powershell 变量。如果不这样做,它们将被视为文字;您将使用 $key 作为键名,而不是 $key 的 value 作为名称。
  • 该问题已被编辑以解决 @x0n 的敏锐观察。

标签: powershell environment-variables


【解决方案1】:
Set-ItemProperty HKCU:\Environment $key $value -Type ExpandString

打高尔夫球

sp hkcu:environment $key $value -t e

Set-ItemProperty sets Registry Value as String on some systems instead of DWord, why?

【讨论】:

    【解决方案2】:

    为注册表methods 使用 Microsoft.Win32 命名空间。要设置数据类型,请使用RegistryValueKind 枚举。像这样,

    [Microsoft.Win32.Registry]::SetValue("HKEY_CURRENT_USER\Environment","MyKey","1",[Microsoft.Win32.RegistryValueKind]::ExpandString)
    

    用户变量位于 HKEY_CURRENT_USER\Environment

    系统变量位于 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

    【讨论】:

    • 我会立即尝试并感谢您的快速回复非常感谢 :-)
    • 哇,您的解决方案非常适合您 :-) 但还有一个问题,我该如何为另一个用户执行此操作 - 例如 - 我以用户 A 的身份登录并想要设置用户用户 B 的环境?
    • 您不会轻易访问其他用户的注册表。考虑一下如果可以将任意键插入另一个用户的位置会发生什么,例如HKCU\Software\Microsoft\Windows\CurrentVersion\Run 位置。要么通过登录脚本等以用户 B 身份运行脚本,要么使用系统变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2016-01-11
    • 2020-09-29
    • 1970-01-01
    相关资源
    最近更新 更多