Мне нужно было добавить новую запись в мою переменную PATH. Это обычное занятие для меня в моей работе, но я недавно начал использовать Windows 8. Я предполагал, что процесс будет похож на Windows 7, Vista, XP ...
Вот моя последовательность событий:
- Откройте Свойства системы (Пуск-> [тип «Панель управления»] -> Панель управления \ Система и безопасность \ Система -> Расширенные настройки системы -> Переменные среды)
- Добавить новый путь в начало моей переменной USER PATH (C: \ dev \ Java \ apache-ant-1.8.4 \ bin;)
- Открыл командную строку (Пуск -> [введите "командная строка" введите] -> [введите "путь" введите]
Мой новый путь не доступен (см. Прикрепленное изображение и видео). Я дублировал тот же процесс на компьютере с Windows 7, и он работал.
РЕДАКТИРОВАТЬ
Переменные среды Windows 8 и видео командной строки
РЕДАКТИРОВАТЬ
Это определенно не поведение Windows 7. Посмотрите это видео, чтобы увидеть поведение, которое я ожидаю работать в Windows 7. http://youtu.be/95JXY5X0fII
РЕДАКТИРОВАТЬ 31.05.2013
Итак, после большого разочарования, я написал небольшое приложение на C # для тестирования WM_SETTINGCHANGE
события. Этот код получает событие как в Windows 7, так и в Windows 8. Однако в Windows 8 в моей системе я не получаю правильный путь; но я делаю в Windows 7. Это не может быть воспроизведено в других системах Windows 8.
Вот код C #.
using System;
using Microsoft.Win32;
public sealed class App
{
static void Main()
{
SystemEvents.UserPreferenceChanging += new UserPreferenceChangingEventHandler(OnUserPreferenceChanging);
Console.WriteLine("Waiting for system events.");
Console.WriteLine("Press <Enter> to exit.");
Console.ReadLine();
}
static void OnUserPreferenceChanging(object sender, UserPreferenceChangingEventArgs e)
{
Console.WriteLine("The user preference is changing. Category={0}", e.Category);
Console.WriteLine("path={0}", System.Environment.GetEnvironmentVariable("PATH"));
}
}
OnUserPreferenceChanging
эквивалентно WM_SETTINGCHANGE
Программа на C #, работающая в Windows 7 (вы можете увидеть, как проходит событие, и он выбирает правильный путь).
Программа на C #, работающая в Windows 8 (вы можете видеть, как проходит событие, но неверный путь).
Есть что-то в моей среде, что ускоряет эту проблему. Однако это ошибка Windows 8?
РЕДАКТИРОВАТЬ 2014-04-28
В связи с этим и рядом других проблем мы больше не используем Windows 8 на рабочем столе. У нас нет среды для продолжения тестирования и экспериментов с этой проблемой. Для нас до сих пор нет ответа или решения этой проблемы. Ответы ниже не решили нашу проблему.
cmd
при запуске нового экземпляра. Конечно, уже запущенныйcmd
не получил обновленную среду.Ответы:
Если вы запускаете командную строку из меню «Пуск» или ярлык на панели задач, вы должны либо:
explorer
. Убей его и перезапусти.explorer
).explorer
).Среда не обновляется немедленно, потому что среды наследуются от их родительского процесса, за исключением того
explorer
, что запускается системой при входе в систему. Вот как он ведет себя в моей системе Windows 7.Таким образом, изменение переменных среды обновляет разделы реестра, но эти ключи не перечитываются до тех пор, пока система не создаст новую среду входа в систему для запуска некоторого процесса. В большинстве случаев этого не происходит, потому что процессы являются дочерними элементами процесса, в котором уже есть среда, поэтому среда наследуется.
источник
WM_SETTINGCHANGE
сообщение.От: http://support.microsoft.com/kb/104011 через /server//q/8855/158027
источник
Проблема в настройках пользователя. В окне 8 у каждого пользователя есть свои переменные окружения.
Вышеупомянутый подход отредактирует переменные среды для пользователя root, возможно, не для вашего текущего пользователя.
Вы должны перейти в учетную запись пользователя -> выбрать текущую учетную запись -> изменить переменные среды
После изменения перезапустите Power Shell. затем
или
Надеюсь, что это поможет вам.
источник
Попробуйте SETX вместо SET. Например
SETX PATH "%PATH%;MyPath"
источник
SETX
а неSET
работает.Если вы используете Windows 8.1, откройте командную строку от имени администратора, затем вызовите команду PATH, и вы должны увидеть, что она появляется там. Когда вы вернетесь к обычному cmd, он также появится. И на самом деле, вы должны иметь возможность запустить добавленное приложение из командной строки.
источник
Поздно его. Тем не мение. Вы можете стать жертвой этой проблемы: пользовательские переменные не разрешены правильно в Windows .
источник
Это работает, если вы используете Win + R с рабочего стола для запуска cmd.exe? Я предполагаю, что запуск его с начального экрана приводит к тому, что родительский файл запущенного cmd.exe отличается от файла explorer.exe (WSAHost.exe, IIRC или как его там), и этот родительский процесс не обновляет свою среду во время сообщений WM_SETTINGCHANGE. У меня нет машины под управлением Windows 8 для тестирования ...
источник