从 Windows 上的所有用户中删除环境变量

从 Windows 上的所有用户中删除环境变量

我需要知道是否有任何方法可以删除给定环境变量的所有实例,这意味着从所有用户和系统本身删除。

问题与软件更新有关。我需要安装两个版本的软件,一个是旧版本,另一个是新版本。在上线周末,我需要确保从系统(用户和系统)中删除旧版本环境变量,然后创建新版本。

问题是我可以使用管理员用户身份登录系统,但不能使用真实用户身份登录,所以如果他的个人资料中有环境变量,那么我就会遇到问题。

有没有什么方法/软件可以达到这个目的?

多谢。

答案1

系统变量存储在注册表中HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment并影响所有用户,因此您只需删除一次不需要的变量。

用户变量在 中HKEY_CURRENT_USER\Environment,但 HKCU 实际上只是 中的一个挂载键HKEY_USERS。因此,如果您具有管理权限,则可以通过编辑 来访问其他用户的环境变量HKEY_USERS\S-[something]\Environment

答案2

如果您想要删除特定用户的特定环境变量,请创建此 ps cmdlet

function Remove-EnvironmentVariableForUser
{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [string] $User,
        [Parameter(Mandatory)]
        [string] $Variable
    )

    Set-StrictMode -Version 'Latest'

    $AdObj = New-Object System.Security.Principal.NTAccount($User)
    $strSID = $AdObj.Translate([System.Security.Principal.SecurityIdentifier])
    $Sid = $strSID.Value
    Assert-NotNull $Sid

    $Path = "Registry::HKEY_USERS\$Sid\Environment"

    $Property = Get-ItemProperty $Path -Name $Variable -ErrorAction Ignore
    if($Property) {
        Write-Warning "Removing $Variable property on path $path from user $User"
        Remove-ItemProperty $Path -Name $Variable
    }else{
        Write-Host "No such Variable exists"
    }
}

相关内容