diff --git a/install.ps1 b/install.ps1 index 93157a0..86b6d46 100644 --- a/install.ps1 +++ b/install.ps1 @@ -376,6 +376,30 @@ function Get-Env { $EnvRegisterKey.GetValue($name, $null, $RegistryValueOption) } +function Publish-Env { + if (-not ("Win32.NativeMethods" -as [Type])) { + 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 + + [Win32.Nativemethods]::SendMessageTimeout($HWND_BROADCAST, + $WM_SETTINGCHANGE, + [UIntPtr]::Zero, + "Environment", + 2, + 5000, + [ref] $result + ) | Out-Null +} + function Write-Env { param( [String] $name, @@ -402,6 +426,7 @@ function Write-Env { } $EnvRegisterKey.SetValue($name, $val, $RegistryValueKind) } + Publish-Env } function Add-ShimsDirToPath {