Xpoint
   [напомнить пароль]

cmd.exe не ищет файлы в путях в %PATH%

Метки: [без меток]
2008-09-04 23:35:30 [обр] Rumata(0/3)[досье]

Сегодня windows повела себя очень странно - командная строка перестала видеть свои исполнимые файлы, прописанные в переменной окружения PATH.
То есть, находясь в каталоге C:\WINDOWS\system32, ping будет запущен, но только в данном каталоге. Из другого каталога - необходимо указывать полный путь.

В свойствах "Моего компьютера" переменная PATH описана верно

C:\WINDOWS\system32>path
PATH=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem; ...

Здесь я привел значение, выводимое консоль. %SystemRoot% указывает на каталог винды.

Запуск консоли через кнопку "Пуск" вполне успешно запускает новый сеанс ДОС. Команда PATH выводит сообщение (выше). Любая внешняя команда (ping, ipconfig и т.д.) сообщает

C:\WINDOWS\system32>ping
'ping' is not recognized as an internal or external command,
operable program or batch file.

Встречался ли кто-нибудь с подобной проблемой? Поиск по интернету приводит на ссылки, но все это не то.
Там говорят о runauto и почих вирусах. Ни один из симптомов, описывающих проблему не совпадает с моей - в основном это отсутствие или наличие чего-либо.

Возможно проблема с данными реестра, вариант с вирусом маловероятен.
При этом ФАР, запущенный из батника (то есть с помощью cmd.exe) нормально работает и видит все программы по путям.

Известна ли кому-либо такая проблема?
Знает ли кто-либо ее решение?

спустя 49 минут [обр] Дмитрий Котеров(18/912)[досье]
Рекомендую воспользоваться утилитой filemon. С помощью нее вы увидите, какие файлы и директории пытается открыть cmd.exe в поисках команды. Возможно, такая диагностика сильно поможет.
спустя 28 минут [обр] Rumata(0/3)[досье]
Спасибо, Дмитрий, попробую.
Вообще очень странный глюк системы.
Не знаю даже в чем может быть причина - то ли "порча" :-), то ли на кнопку "пуск" нажал (что на корпусе, а не на экране).
спустя 8 часов [обр] Алексей Полушин(20/231)[досье]
У меня в значении выводимом на консоль по команде path вместо %SystemRoot% уже подставлен путь к виндовому каталогу. А что у вас в свойствах компьютера в переменных окружения написано ? Случайно не %%SystemRoot%% (с двойным %) ?
спустя 31 минуту [обр] Rumata(0/3)[досье]

Очень странное поведение. Видимо что-то протухло в системе. Двойное редактирование PATH в свойствах компьютера вылечило (надеюсь)
Двойное - это я решил вручную раскрыть SystemRoot, потом вернул назад.

НО! При редактировании проценты я не обнаружил удвоения процентов.

Алексей Полушин[досье]
В свойствах компьютера написано раскрытое значение - по клику редактировать - показывает нераскрытое.

спустя 9 часов [обр] EVIL[досье]
Весёлое "совпадение". У меня также возникла подобная проблема, и она тоже возникла 04.09.2008 как и у автора поста. Оказалось, дело в том, что моя программа, модифицируя переменную окружения Path на системном уровне, читая её из реестра (она хранится именно там), после изменения записывала значение с типом REG_SZ, т.е. как обычную строку, в то время как все значения, в которых при прочтении автоматически должны раскрываться переменные окружения типа %SystemRoot%, обязаны иметь тип REG_EXPAND_SZ, в этом и есть отличие между этими двумя типами. После того как я "научил" свою программу правильно модифицировать эту переменную, сохраняя ей тип REG_EXPAND_SZ, работа командной строки вернулась к норме. Возможно у автора поста ошибка была вызвана из за программы, написанной каким-то программистом вроде меня, который не был знаком с типом REG_EXPAND_SZ :)
спустя 1 минуту [обр] EVIL[досье]
...А при сохранении в свойствах компьютера значения Path система все делает правильно и сохраняет с типом REG_EXPAND_SZ, отсюда и волшебный фикс этой развесёлой проблемы :)
спустя 5 часов [обр] Дмитрий Котеров(18/912)[досье]
Да... REG_EXPAND_SZ - это мощно. Архитектура, блин. Ну хорошо хоть Микрософт не заставил Интел сделать специальную инструкцию процессора, которая раскрывает переменные окружения в последовательности байтов. :-)
спустя 5 часов [обр] Rumata(0/3)[досье]

EVIL[досье]
Небольшое уточнение. Любая переменная окружения, сохраненная в реестре и содержащая подстановку переменную, - в данном случае %SystemRoot%, должна быть типа REG_EXTAND_SZ.

Сейчас проверил старую ветку

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\Environment
    Path   REG_SZ   %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;...

Видимо она и глючила, так как текущая - нормальная:

HKEY_LOCAL_MACHINE\SYSTEM\ControlSet\Control\Session Manager\Environment
    Path   REG_EXPAND_SZ   %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;...

При экспорте REG_SZ - обычная строка, а REG_EXPAND_SZ - hex(2)

Powered by POEM™ Engine Copyright © 2002-2005