42

См. Обновления 3 и 4 ниже, чтобы узнать, как возникла проблема.


Мой компьютер (Windows 7 x64, Lenovo Thinkpad T530) имеет проблему, решающую% windir%. После загрузки все работает нормально. Через некоторое время компьютер внезапно не может разрешить% windir%.

Консольное окно

Проверка окна переменных среды показывает, что оно определено.

Вариабельность среды

Проверка реестра также показывает, что он также определен. Я фактически удалил ключ и повторно ввел его безрезультатно.

реестр

После перезагрузки все работает некоторое время нормально. У кого-нибудь есть мысли по поводу чего-либо еще, что я могу проверить?


Обновление 1: Подумав об этом, я удалил драйвер / программу Konica Minolta Pagebox, которая была установлена примерно в то время, когда начиналась эта проблема (см. Комментарии ниже). Проблема, кажется, занимает около 4-24 часов (я никогда не рассчитывал это время), поэтому я обновлюсь после этого.

Обновление 2: проблема все еще происходит. Я вернулся с обеда, и% windir% не может быть найден. Этим утром я сделал тест после перезагрузки и уложил компьютер в режим сна, затем проснулся. % windir% все еще определялся после пробуждения.

Обновление 3: В соответствии с Даниэлем в комментариях я запускал set до и после ошибки и сравнивал результаты. Первое, что я заметил, это то, что при новой загрузке мой % path% имеет длину 2000+ символов. Я сократил его до ~ 375 символов и подтвердил его в новом окне cmd. Я перезагрузил компьютер, проверил путь снова, и он вернулся к более чем 2000+ символам (это соответствовало тому, что я первоначально видел). Я обрезал его снова и перезагрузил еще раз, и произошло то же самое. Я удалил переменную пути и создал новую; случилось то же самое. На этом этапе все, что я могу сделать, это либо я не могу навсегда изменить свой путь, либо путь сбрасывается каким-либо процессом при загрузке. Какие-нибудь мысли?

Обновление 4: я изменил свой путь с помощью метода реестра, предложенного ниже. Я проверил мой путь сегодня после запуска некоторое время, и он вырос из того, что я ввел в реестр; теперь у него есть несколько новых записей и много дубликатов. Только новые записи из SQL Server 2012. Я пошел, чтобы изменить это в реестре, и я заметил, что реестр НЕ совпадает с выводом echo %path% . Проверка переменных среды на вкладке «Дополнительные свойства» показывает третью версию моего пути.

Registry Path:
C:\Program Files (x86)\Microchip\mplabc30\v3.30\bin;
C:\RUBY193\BIN;
C:\Windows\SYSTEM32;
C:\Windows;
C:\Windows\SYSTEM32\WBEM;
C:\PROGRAM FILES\COMMON FILES\LENOVO;
C:\SWTOOLS\READYAPPS;
C:\PROGRAM FILES (X86)\COMMON FILES\LENOVO;
C:\PROGRAM FILES (X86)\MICROCHIP\MPLAB C32 SUITE\BIN;
C:\HTSOFT\PIC18\BIN;
C:\PROGRAM FILES\TORTOISESVN\BIN;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;

Command Line path:
C:\Program Files (x86)\Microchip\mplabc30\v3.30\bin;
C:\RUBY193\BIN;
C:\Windows\SYSTEM32;
C:\Windows;
C:\Windows\SYSTEM32\WBEM;
C:\PROGRAM FILES\COMMON FILES\LENOVO;
C:\SWTOOLS\READYAPPS;
C:\PROGRAM FILES (X86)\COMMON FILES\LENOVO;
C:\PROGRAM FILES (X86)\MICROCHIP\MPLAB C32 SUITE\BIN;
C:\HTSOFT\PIC18\BIN;
C:\PROGRAM FILES\TORTOISESVN\BIN;
C:\Windows\System32\WindowsPowerShell\v1.0\;
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\;
C:\Program Files (x86)\Microsoft SQL Server\110\Tools\Binn\;
C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;
C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn\;
C:\Program Files(x86)\Microchip\mplabc30\v3.30\bin;
C:\RUBY193\BIN;
C:\Windows\SYSTEM32;
C:\Windows;
C:\Windows\SYSTEM32\WBEM;
C:\PROGRAM FILES\COMMON FILES\LENOVO;
C:\SWTOOLS\READYAPPS;
C:\PROGRAM FILES (X86)\COMMON FILES\LENOVO;
C:\PROGRAM FILES (X86)\MICROCHIP\MPLAB C32 SUITE\BIN;
C:\HTSOFT\PIC18\BIN;
C:\PROGRAM FILES\TORTOISESVN\BIN;
C:\Windows\System32\WindowsPowerShell\v1.0\;

Environment Variables path:
C:\Program Files (x86)\Microchip\mplabc30\v3.30\bin;
C:\RUBY193\BIN;
C:\Windows\SYSTEM32;
C:\Windows;
C:\Windows\SYSTEM32\WBEM;
C:\PROGRAM FILES\COMMON FILES\LENOVO;
C:\SWTOOLS\READYAPPS;
C:\PROGRAM FILES (X86)\COMMON FILES\LENOVO;
C:\PROGRAM FILES (X86)\MICROCHIP\MPLAB C32 SUITE\BIN;
C:\HTSOFT\PIC18\BIN;
C:\PROGRAM FILES\TORTOISESVN\BIN;
C:\Windows\System32\WindowsPowerShell\v1.0\;

Похоже, что путь командной строки = путь реестра + путь переменных среды. Я попытался установить путь к реестру и переменным окружения к тому же самому и перезагрузиться. После перезагрузки мой путь теперь удваивается, в основном две параллельные копии пути реестра выше.

Еще раз, есть мысли?

Обновление 5: после разговора с ИТ-менеджером он говорит, что борется с аналогичной проблемой на другом компьютере. Оба компьютера имеют твердотельные накопители (кажется, это единственный общий фактор). Это может или не может быть уместным.

10 ответов10

26

У меня была та же проблема, и я нашел этот вопрос первым. Тем не менее, реальная причина / решение еще не упоминается в этом вопросе, но упоминается здесь: переменные PATH и среды Windows 7 повреждены

Краткое изложение решения: убедитесь, что ваш путь <2048 символов. Проверьте как пользовательские переменные, так и системные переменные.

4

С помощью графического интерфейса установите переменную % windir% на % SystemRoot%.

Что касается вашего% path%, вы можете решить это с помощью редактора реестра:

  • Запустите Regedit.exe
  • Перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
  • На правой панели дважды щелкните значение Path (REG_EXPAND_SZ)
  • Измените значение, как вам нравится, и перезагрузите

2

У меня была такая же проблема в моем Lenovo TS530. Это начало происходить после установки новых программ, из-за чего мой путь стал намного длиннее, чем раньше, и поэтому установщики добавили новый материал в начало определения пути . Я отредактировал путь в regedt , переместив% SystemRoot% в начало определения пути.

path = %SystemRoot%\system32;%SystemRoot%;%SystemRoot....

Кроме того, я отредактировал переменную среды windir из

windir= C:/Windows

в

windir=C:\Windows

Кажется, это решило проблему. (Возможно, ранее я допустил ошибку с обратной косой чертой, пытаясь решить проблему. Или же установщик изменил его.)

1

Я обнаружил (последовательно), что это также произойдет, если SQL Server 2012 или более поздние версии установлены на компьютере с Windows 7 (не уверен, что проблема также возникает на Win8.x или Win10), но решение, которое я нашел, заключается в также создайте переменную среды windir в текущем пользовательском контексте, чтобы установить значение% SystemRoot%. Единственный раз, когда мы увидим это, это когда RDP'ing (удаленный сеанс) на рабочую станцию (и). Если бы мы вошли в консоль, мы бы не столкнулись с этим вообще. Я не знаю, какие компоненты SQL 2012 (или более поздние версии) были установлены на вашем компьютере непосредственно перед этим или нет, но вы можете попробовать это решение.

1

Я была такая же проблема. Это было решено, когда я удалил переменную среды PATH (после создания резервной копии ее содержимого) в следующем диалоговом окне.

C:\Windows\System32\SystemPropertiesAdvanced.exe

Я реконструировал переменную PATH позже один за другим. Я переместил часть содержимого PATH, которая не вписывалась в системные переменные, в переменные пользователя PATH.

0

Наша справочная служба дала мне такой ответ:

  1. Откройте настройки контроля учетных записей, нажав кнопку «Пуск», а затем - «Панель управления». В поле поиска введите uac и нажмите кнопку Изменить параметры контроля учетных записей.
  2. Выполните следующие действия:• Чтобы отключить UAC, переместите ползунок в положение «Никогда не уведомлять» и нажмите кнопку «ОК». Если вас попросят ввести пароль администратора или подтверждение, введите пароль или предоставьте подтверждение. Вам нужно будет перезагрузить компьютер, чтобы отключить UAC.

Это работает с учетом двух разных вещей:

1.) Эта проблема на самом деле не существует, потому что эта программа требует, чтобы% windir работал правильно. Вместо этого запустите C:\Windows\System32\UserAccountControlSettings в командной строке.

2.) Вы предпочитаете не иметь предупреждения безопасности Windows.

0

У меня была такая же проблема после обновления SSD на моем Lenovo X230. Программное обеспечение, которое я использовал для миграции (Acronis TrueImage), добавило значение пути, которое, должно быть, привело меня к превышению лимита. Я решил это следующим образом:

Открыть Regedit

Перейдите в HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment

Измените значение Path (см. Ответ пользователя 184745 выше).

Вырежьте текущее значение и вставьте в блокнот.

Отредактировал несколько повторяющихся значений, а также пути, которые казались мало полезными. Я сократил длину пути с 2283 символов до 1517.

Вставил новую строку пути в ключ Path.

(На всякий случай сохранил содержимое моего блокнота.)

Rebooted. Все хорошо.

0

Как уже упоминалось @ Pieter-Jan Busschaert, это, скорее всего, из-за поврежденной или слишком длинной переменной окружения PATH .

Самый простой способ как это исправить - скачать Rapid Environment Editor. Он показывает вам, что не так с вашими настройками PATH , и позволяет вам исправить это сразу.

0

Пожалуйста, проверьте ограничение переменной пути:https://support.microsoft.com/en-us/kb/2685893

-1

У меня были те же проблемы, что и выше. % Windir%. значки не отображаются для некоторых элементов. Любое приложение, которое использовало windir ... Перебрал все исправления, включая холодную загрузку, сокращение пути и т.д.
Наконец-то воссоздал мой профиль windows ... проблема исчезла.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .