Excluindo uma variável de ambiente de todos os usuários no Windows

1

Eu preciso saber se há alguma maneira de excluir todas as instâncias de uma determinada variável de ambiente, isso significa de todos os usuários e do próprio sistema.

O problema é sobre uma atualização de software. Eu preciso manter instalado um software em 2 versões, o antigo e o mais novo. Durante o go live weekend eu preciso ter certeza de que a variável de ambiente OLD Version é excluída do sistema (Usuário e sistema) e apenas criar a nova.

O problema é que eu posso logar no sistema com o usuário admin mas não com o usuário real, então se ele tiver a variável de ambiente em seu perfil é quando eu tenho o problema.

Existe alguma maneira / suave para este propósito?

Muito obrigado.

    
por user257234 25.09.2013 / 09:29

2 respostas

2

As variáveis do sistema são armazenadas no registro em HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment e afetam todos os usuários, portanto, você precisa excluir uma variável indesejada apenas uma vez.

Variáveis de usuário estão em HKEY_CURRENT_USER\Environment , mas HKCU é na verdade apenas uma chave montada de HKEY_USERS . Portanto, se você tiver privilégios administrativos, poderá acessar as variáveis ambientais de outros usuários editando HKEY_USERS\S-[something]\Environment .

    
por 25.09.2013 / 10:20
0

Criado este cmdlet ps se você quiser remover uma variável de ambiente específica de um usuário específico

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"
    }
}
    
por 18.12.2017 / 23:06