Я пытаюсь добавить путь к своему приложению к пути к системной среде, и хотя следующий код добавляет его соответствующим образом:
using (RegistryKey regKey = Registry.LocalMachine.OpenSubKey(@"SYSTEM\CurrentControlSet\Control\Session Manager\Environment\", true)) {
String pathString = regKey.GetValue("PATH", "", RegistryValueOptions.DoNotExpandEnvironmentNames).ToString();
if (pathString[pathString.Length - 1] != ';') {
pathString = pathString + ";";
}
regKey.SetValue("PATH", pathString + Directory.GetCurrentDirectory() + ";");
}
, он не вступит в силу, пока я не посмотрю на переменные среды черезПанель управления, а затем, когда я это сделаю, она прервет все другие ссылки на переменные окружения в этом пути, например,% SystemRoot% \ System32, пока ... Я скопирую всю строку пути из и обратно в переменную PATH и повторно сохраню ее.
Так что, по-видимому, есть часть, которую мне не хватает, потому что путь на 100% правильный, просто кажется, что он не был обновлен в системе.
Редактировать: Я нашелэто изменение:
regKey.SetValue("PATH", pathString + Directory.GetCurrentDirectory() + ";");
Кому:
regKey.SetValue("PATH", pathString + Directory.GetCurrentDirectory() + ";", RegistryValueKind.ExpandString);
Устранит проблему с разрывом ссылочных переменных (не знаю, зачем мне это нужно, они имеют ключ REG_EXPAND_SZ иЯ не изменяю его), но у меня все еще есть проблема с тем, что путь не обновляется, пока я не отредактирую его через панель управления.
До сих пор я не нашел программный путьсделать это.