Я хочу расширить свой системный путь поиска, не добавляя новые каталоги в %PATH% , мне известно о записи в реестре путей к App Paths что доступ к этой записи осуществляется только при использовании ShellExecuteEx который не используется командной строкой. Это какой-нибудь механизм на windows так?

2 ответа2

0

Насколько я знаю, пути к приложению нельзя использовать для пути поиска, но вы можете задать отдельный PATH для системных и пользовательских переменных среды. Поиск исполняемых файлов будет включать все элементы в обоих.

Если длина системного PATH является проблемой, вы можете сократить ее, определив другую переменную среды и сославшись на нее, например:

Создать переменную среды PF32 со значением Program File (x86)

В PATH C:\Program Files (x86)\Intel затем сокращается до % PF32%\Intel.

0

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

Вот пример (run-winvile.bat), который дает доступ из командной строки к программе с графическим интерфейсом, которой нет в PATH . Он использует setlocal для ограничения области видимости измененной среды:

@echo off
setlocal
set WINVILE_DIR="C:\Program Files (x86)\VI Like Emacs\bin"
cd %WINVILE_DIR%
IF ERRORLEVEL 1 goto :finish  
set WINVILE_EXE=WinVile-wide-ole.exe
if exist %WINVILE_EXE% start %WINVILE_EXE% %1 %2 %3 %4 %5 %6 %7 %8 %9
:finish
endlocal

Этот пример избавляет от некоторых конфликтующих имен в PATH:

@echo off
setlocal
rem trim path to get rid of cygwin
set PATH=C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\com

rem add PERL for vile's builds
set PATH=%PATH%;c:\perl\5.8.5\bin;c:\perl\5.8.5\bin\mswin32-x86-multi-thread

call "c:\program files (x86)\microsoft visual studio 9.0\vc/vcvarsall.bat" %1
shift
run-winvile %*
endlocal

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