Russian Qt Forum

Qt => Общие вопросы => Тема начата: Flake от Сентябрь 06, 2007, 14:30



Название: Проблема с добавлением системных переменных.
Отправлено: Flake от Сентябрь 06, 2007, 14:30
Здравствуйте.

Нужно в windows добавить новые системные переменные и добавить путь в конец переменной Path.
Пример из ассистента не работает.
Код:
QProcess process;
QStringList env = QProcess::systemEnvironment();
env << "TMPDIR=C:\\MyApp\\temp"; // Add an environment variable
env.replaceInStrings(QRegExp("^PATH=(.*)", Qt::CaseInsensitive), "PATH=\\1;C:\\Bin");
process.setEnvironment(env);
process.start("myapp");
В чём может быть проблема?
Спасибо.


Название: Re: Проблема с добавлением системных переменных.
Отправлено: Разуев Максим от Сентябрь 07, 2007, 06:27
Может проблема в винде. По крайней мере у меня при ручном изменении переменных окружения. В системе значения появлялись только при Logout/Login или перезагрузке.


Название: Re: Проблема с добавлением системных переменных.
Отправлено: vaprele07 от Сентябрь 07, 2007, 06:56
Оно будет работать в контексте запущенного процесса "myapp", насчёт глобальности и обновлений
см: WM_SETTINGCHANGE (http://msdn2.microsoft.com/ru-ru/library/ms682653.aspx)


Название: Re: Проблема с добавлением системных переменных.
Отправлено: Flake от Сентябрь 07, 2007, 13:51
Оно будет работать в контексте запущенного процесса "myapp"
Не понял :) Что нужно сделать, чтобы переменные добавлялись?


Название: Re: Проблема с добавлением системных переменных.
Отправлено: BD от Сентябрь 07, 2007, 14:19
помимо функций winapi ( см. пост vaprele07 )
можно попробовать сделать .bat файл, где производится установка нужных переменных, а затем он вызывается средствами qt
с помощью
Код:
     QString program = "run.bat";
     QProcess *myProcess = new QProcess(parent);
     myProcess->start(program);

сам bat файл, к примеру (который можно создать либо ручками, либо создавать его в проге и затем удалять) :
Код:
set переменная=строка
path c:\MyApp

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

Цитировать
Не понял

Имелось ввиду, что переменные окружения в том примере устанавливались не системными, а только для приложения myapp


Название: Re: Проблема с добавлением системных переменных.
Отправлено: Flake от Сентябрь 09, 2007, 20:25
Батник работает только на протяжении командной сессии. А мне надо чтобы переменные устанавливались навсегда.


Название: Re: Проблема с добавлением системных переменных.
Отправлено: BD от Сентябрь 11, 2007, 08:17
Для winxp\win2000\winnt батник, созданный и запущенный пользователем устанавливает переменные для этого пользователя
навсегда


Название: Re: Проблема с добавлением системных переменных.
Отправлено: Вячеслав от Сентябрь 11, 2007, 09:07
Для winxp\win2000\winnt батник, созданный и запущенный пользователем устанавливает переменные для этого пользователя
навсегда
Мдя ? И как интересно ? Покажи плиз пример , так чтоб это дело не перезапускать и пользоваться только системными командами ?
И еще - батник ставит переменные только для себя и того что запущено после него .....
PS утилитки типа setx и setenv http://web6.codeproject.com/tools/SetEnv/SetEnv_exe.zip (http://web6.codeproject.com/tools/SetEnv/SetEnv_exe.zip) не трогаем , так-как в системе их может и не быть ;)