Изменить системную переменую PATH
процесса и у каждого она своя?
Под Windows NT/2000/XP/... - HKCU\Environment - пользовательские, HKLM\System\CurrentControlSet\Session Manager\Environment - глобальные.
Переменные окружения наследуются от родителя к потомку, но не в обратном направлении. См. так же ответ .
Под Windows 9x/ME - править autoexec.bat
На самом деле это верно только под Windows 9x. Потому что Windows ME не только не пользуется файлами autoexec.bat и config.sys, но даже обнуляет их при каждой перезагрузке.
фигасе, я даже в XP прописывал path в autoexec.bat и всё работало
Ну ведь XP - это не есть прямое продолжение ME, хотя она оттуда многое взяла.
ХР и 2003, насколько я понял, автоекзек и конфиг интерпретирует, причем довольно криво. Так что лучше их не использовать.
А так вообще программы на разных языках бывают =) Неплохо было бы указать какой именно интересует. В общем случае, конечно, через регистри.
О! Предлагаю извратный вариант: рантаймно сгенерить прогу на JScript под Виндовс Скриптинг Хост
var WshShell = WScript.CreateObject("WScript.Shell");
var WshSysEnv = WshShell.Environment("SYSTEM");
WshSysEnv("PATH") += ";zzz";
Причем вместо ззз вписать нужный путь, после чего эту прогу запустить.
Только тут есть одна фишка: все процессы юзающие path нужно будет перезапустить. Причем это не зависит от способа прописывания. Вот.
вообще менять системную переменную смысла наверное нет, так как хз какие там права у пользователя будут (restricted user менять системную Path не может); нужно изменить "локальную" (ну может она как-то по-другому правильно называется, но смысл, я надеюсь, вы поняли) переменную Path на время выполнения программы. Вообще можно ли в теле программы, которая юзает некоторые библиотеки, прописать это изменение переменной Path, чтобы она знала откуда их подгружать, или я что-то туплю (что мне сильно кажется)?
Энивей, у любого нормального exec (функция такая для запуска программ) есть версия, в которой ты сам передаешь массив переменных окружения. Какой угодно.
Оставить комментарий
Busenka76
Как в программе изменить системную переменную PATH так, чтобы после выхода это изменение не "потерялось"?К примеру если в cmd написать path=c:\programs;%path% , то после выхода из командной строки путь c:\programs не будет проверяться при последующем запуске каких-либо программ.
В строке "Path" переменных среды в свойствах "My computer" написано много чего типа c:\Windows;..... - вот как этот списочек поменять из программы?