c#
using System; using System.Runtime.InteropServices; using Microsoft.WindowsAPICodePack.Dialogs; namespace AppendPath { internal static class Program { [DllImport("User32.dll", CharSet = CharSet.Auto)] private static extern int SendMessageTimeout( IntPtr hWnd, [MarshalAs(UnmanagedType.U4)] int Msg, IntPtr wParam, IntPtr lParam, [MarshalAs(UnmanagedType.U4)] int fuFlags, [MarshalAs(UnmanagedType.U4)] int uTimeout, [MarshalAs(UnmanagedType.U4)] ref int lpdwResult); [STAThread] private static void Main(string[] args) { string path; if (args.Length == 1) { path = args[0]; } else { var fd = new CommonOpenFileDialog { IsFolderPicker = true }; if (fd.ShowDialog() != CommonFileDialogResult.Ok) return; path = fd.FileName; } Environment.SetEnvironmentVariable( "Path", Environment.GetEnvironmentVariable( "Path", EnvironmentVariableTarget.Machine) + ";" + path, EnvironmentVariableTarget.Machine); var r = 0; SendMessageTimeout( (IntPtr)0xffff, 0x001A, (IntPtr)0, Marshal.StringToHGlobalAnsi("Environment"), 0x0002, 5000, ref r); } } }