title: C#/.NET app doesn't recognize Environment Var Change (PATH)
body: <p>In my C# app, I am programmatically installing an Oracle client if one is not present, which requires adding a dir to the PATH system environment variable.  This all works fine, but it doesn't take effect until the user logs out/in to windows, or reboots.  How can I get my app to recognize and use the new PATH var without this step?  Even restarting my app would be better than requiring the user to log out/in.</p>
  
  <p>Supposedly, broadcasting this change to other processes should work.  Here's what I've tried, with no success:</p>
  
  <pre><code>    using System.Runtime.InteropServices;
  
      private const int HWND_BROADCAST = 0xffff;
      private const int WM_WININICHANGE = 0x001a, WM_SETTINGCHANGE = WM_WININICHANGE, INI_INTL = 1;
      [DllImport("user32.dll")]
      private static extern int SendMessageTimeoutA(int hWnd, uint wMsg, uint wParam, string lParam, int fuFlags, int uTimeout, int lpdwResult);
  
      int rtnVal = 0;
      SendMessageTimeoutA(HWND_BROADCAST, WM_SETTINGCHANGE, 0, "Environment", 2, 5000, rtnVal);
  </code></pre>
  
  <p>I've been told if you stop and restart the process in question, it should pick up these kinds of changes, but restarting my app doesn't do it.  I suppose it could be an Oracle issue, that something about Oracle requires the login to recognize the change, I'm not sure.  Thanks in advance.</p>