For certain services (depending on their parent service), it requires a full reboot, other processes like ‘explorer.exe’, ‘cmd.exe’ etc will see the new env vars immediately due to a notify message internally being broadcasted by Windows (opening a new process for them).
ProcExplorer64.exe (part of SysInternals Suite) would give you the view in one its tab when you select a pid, in this case powershell.exe, cmd.exe, sc.exe or winsw.exe or safenode-manager.exe etc, whether that service or pid is seeing the new PATH value as part of its current PEB block etc (which it inherits from its parent or OS at time of spin up).
For certain services or existing pids that are running, calling low level Windows API calls like this will immediately make the existing PID or service that’s already running recognize the new environment variables (or may require restart of service but not a reboot of computer) (it depends on what the parent root service is for that pid (C# code below)):
[DllImport( "user32.dll", SetLastError = true, CharSet = CharSet.Auto )]
static extern bool SendNotifyMessage( IntPtr hWnd, uint Msg,UIntPtr wParam, string lParam );
public static void NotifyUserEnvironmentVariableChanged()
{
const int HWND_BROADCAST = 0xffff;
const uint WM_SETTINGCHANGE = 0x001a;
SendNotifyMessage( ( IntPtr )HWND_BROADCAST, WM_SETTINGCHANGE, ( UIntPtr )0, "Environment" );
}
So if ProcExplorer64 isn’t showing the updated PATH as part of the running pid’s env vars, then attempting to refresh its env vars with above code may work, and if not, then ultimately a reboot would be required.