Модераторы: bartram, Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Установить PATH для Administrator, WinXP\2003\98\Vista 
:(
    Опции темы
tishaishii
Дата 10.3.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Надо программно изменить PATH для самого главного пользователя универчально в WinXP\2003\98\Vista.
PM MAIL ICQ Skype   Вверх
Kostyaxp
Дата 12.3.2007, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 19.7.2006

Репутация: 1
Всего: 1



В смысле поменять местоположение папки с аккаунтом админа? Уневирсально не выйдет (хотя бы потому что по-умолчанию путь для их хранения разный).

Это сообщение отредактировал(а) Kostyaxp - 12.3.2007, 18:30
PM MAIL   Вверх
tishaishii
Дата 16.3.2007, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



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

Ну в 98м я для этого меняю autoexec.bat, в XP, 2000, 2003, ... меняю в реестре, а надо как-то программно найти общее решение. Делаю инсталляшку своей АИС, надо. Другие же программы делают.
PM MAIL ICQ Skype   Вверх
Tectoder
Дата 16.3.2007, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 202
Регистрация: 13.3.2007

Репутация: нет
Всего: 8



Цитата(MSDN)

The user can add or modify system environment variables using the Control Panel. To programmatically add or modify system environment variables, add them to the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment registry key, then broadcast a WM_SETTINGCHANGE message. This allows applications, such as the shell, to pick up your updates. Note that environment variables listed in this key are limited to 1024 characters.
Исходя из данной цитаты  я могу предположить, что данный метод будет в равной степени работать для всех существющих версий windows

Это сообщение отредактировал(а) Tectoder - 16.3.2007, 20:22
PM   Вверх
tishaishii
Дата 17.3.2007, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Посмотрим

Добавлено @ 20:03 
Не уже ли, если поменять в реестре 95\98 поменять PATH, то и в autoexec.bat изменится?
PM MAIL ICQ Skype   Вверх
tishaishii
Дата 18.3.2007, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



В 98м пути HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment не существует.
PM MAIL ICQ Skype   Вверх
tishaishii
Дата 18.3.2007, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Создатель
***


Профиль
Группа: Завсегдатай
Сообщений: 1262
Регистрация: 14.2.2006
Где: Москва

Репутация: нет
Всего: 8



Короче, раз ни кто ни чего не знает, пришлось самому справляться:
[code=perl]use IO::Handle;
use Win32;
use Win32::Registry;

$|=1;

sub registryValue {
    my($path, $rh, $result)=shift;
    ${'::'.$path}->Open(shift, $rh) && $rh->QueryValueEx(shift, undef, $result);
    +$result
}

sub addPath {
    my($str, $paths, $i)=(shift, shift, shift);
    $paths->{$_}=++$$i foreach
        grep /\S/, map{s{^"(.*?)"$}{$1}i;+exists $paths->{+uc} ? uc : $_}split/\s*;\s*/, $str;
}

sub setPath {
    my($path, $CRLF, $i)=(shift, "\r\n");
    if((&Win32::GetOSVersion)[4]<2) {
        my$file=(($ENV{WINDIR} || $ENV{WINBOOTDIR})=~m{^([A-Z]:)}i)[0].'\AUTOEXEC.BAT';
        open my$fh, '<'.$file;binmode $fh;my@in=<$fh>;close $fh;
        open my$fh, '>'.$file;binmode $fh;
        foreach(@in) {
            if(/^\s*SET\s+PATH\s*=\s*(.*?)\s*$/i) {
                &addPath($1, $path, \$i)
            } else {
                $fh->print(/^\s*(.*?)\s*$/?$1:$_, $CRLF)
            }
        }
        $fh->print('SET PATH=', join(';', map{s{\\?$}{}g;'"'.$_.'"'}
                    sort{$path->{$a}<=>$path->{$b}}keys %$path), $CRLF);
        close $fh;
    } else {
        my($drv, $dir, $node, $rh)=(
            'HKEY_LOCAL_MACHINE', 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'PATH'
        );
        &addPath(&registryValue($drv, $dir, $node), $path, \$i);
        ${+'::'.$drv}->Open($dir, $rh);
        $rh->SetValueEx(
            $node, undef, REG_SZ,
            join(';', map{s{\\?$}{}g;'"'.$_.'"'}sort{$path->{$a}<=>$path->{$b}}keys %$p

Это сообщение отредактировал(а) tishaishii - 18.3.2007, 12:36
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Windows"
December
bartram
Akella

Запрещается!

1. Обсуждать взлом и делиться кряками

2. Способствовать созданию и распространению вирусов

  • Для бессмертных бородатых вопросов типа Win vs Nix есть специальный форум Религиозные Войны
  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • ВСЕГДА УКАЗЫВАЙТЕ ВЕРСИЮ ОС

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, December, bartram, Akella.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Windows | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.