Ich suche nach einem Programm für Microsoft Windows 7, mit dem der Benutzer einen bestimmten Pfad aus der PATH-Umgebungsvariable bequem über eine GUI deaktivieren/aktivieren kann. Der Rapid Environment Editor eignet sich hervorragend zum Verwalten der PATH-Umgebungsvariable, verfügt jedoch meines Wissens nicht über diese Option (kann nur einen Pfad hinzufügen / entfernen).
Die Funktion wäre der Funktion von CCleaner zum Deaktivieren / Aktivieren eines bestimmten Programms beim Start irgendwie ähnlich:
BEARBEITEN : Path Manager
funktioniert überhaupt nicht gut -> https://superuser.com/questions/891899/issue-when-disabling-a-path-using-path-manager/892798#892798
Wie wäre es mit PATH Manager? Der Screenshot zeigt eine "aktive" Spalte.
Nach einigem Suchen habe ich immer noch kein Programm gefunden , das das tut, was Sie wollen. Sie könnten jedoch ein PowerScript für Ihren Zweck erstellen. Dies kann als Ausgangspunkt verwendet werden:
#requires -version 2
param(
[string] $AddedFolder,
[bool] $ApplyImmediately = $true
)
$environmentRegistryKey = 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment'
$oldPath = (Get-ItemProperty -Path $environmentRegistryKey -Name PATH).Path
# See if a new folder has been supplied.
if (!$AddedFolder)
{
Write-Warning 'No Folder Supplied. $ENV:PATH Unchanged'
return
}
if ($ENV:PATH | Select-String -SimpleMatch $AddedFolder)
{
Write-Warning 'Folder already within $ENV:PATH'
return
}
$newPath = $oldPath + ’;’ + $AddedFolder
Set-ItemProperty -Path $environmentRegistryKey -Name PATH -Value $newPath
if ($ApplyImmediately)
{
if (-not ("Win32.NativeMethods" -as [Type]))
{
# import sendmessagetimeout from win32
Add-Type -Namespace Win32 -Name NativeMethods -MemberDefinition @"
[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SendMessageTimeout(
IntPtr hWnd, uint Msg, UIntPtr wParam, string lParam,
uint fuFlags, uint uTimeout, out UIntPtr lpdwResult);
"@
}
$HWND_BROADCAST = [IntPtr] 0xffff;
$WM_SETTINGCHANGE = 0x1a;
$result = [UIntPtr]::Zero
# notify all windows of environment block change
[Win32.Nativemethods]::SendMessageTimeout($HWND_BROADCAST, $WM_SETTINGCHANGE, [UIntPtr]::Zero, "Environment", 2, 5000, [ref] $result);
}
Quelle: http://poshcode.org/3537
Frank Dernoncourt