none
пишу переменную окружения тип Volatile wscript скриптом но не могу ее использовать .? RRS feed

  • Вопрос

  • она есть в реестре HKCU\VolatileEnvironment\CLIENTIP="10.10.10.1"
    и скриптом я ее вижу но в например в батнике ее использовать не могу
    и командой "set" ее не видно


    как сделать что бы %CLIENTIP% возвращал значение пременной окружения ???


    так я пишу переменную :
    Set objShell = WScript.CreateObject("WScript.Shell")
    Set colUsrEnvVars = objShell.Environment("Volatile")
    'Wscript.Echo colUsrEnvVars("CLIENTIP")
    colUsrEnvVars("CLIENTIP") = "10.10.10.1"

    • Перемещено Nikita PanovModerator 7 мая 2009 г. 6:41 вопрос по разработке ([Loc]From:Windows Server 2003/2000/NT)
    24 октября 2006 г. 5:45

Все ответы

  • Повторил:

    1. cmd> set CLIENTIP

    >10.10.10.1

    2. cmd>echo %CLIENTIP%

    >10.10.10.1

    ======================

    Все работает ...

     

    24 октября 2006 г. 9:35
  •  Andrey Kudrjashov

    если я пишу ручками

    set CLIENTIP=10.10.10.1

    а затем

    echo %CLIENTIP%

    то все нормально

    10.10.10.1

     но если скриптом выше описанным то

    echo %CLIENTIP%

    возвращает
    %CLIENTIP%

    25 октября 2006 г. 3:47
  • Егор,

    Я

    1. Беру твой пример и записываю его в temp.vbs и запускаю temp.vbs

    2. Запускаю regedit и проверяю, указанный тобой ключ HCU\Violate Environment\CLIENTIP

    3. Запускаю cmd

    4. Выполняю команду

    cmd> echo %CLIENTIP%

    5. Получаю

    cmd>10.10.10.1

    ==================================

    Больше НИЧЕГО не делаю ... все работает.

    25 октября 2006 г. 4:05
  • этот скрипт стоит в логин скриптах через политики групп

    логинюсь к серверу

    смотрю в реестре появилась эта переменная

    C:\>echo %CLIENTIP%
    %CLIENTIP%

    C:\>cscript tmp.vbs
    Microsoft (R) Windows Script Host Version 5.6
    Copyright (C) Microsoft Corporation 1996-2001. All rights reserved.

    C:\siv>echo %CLIENTIP%
    %CLIENTIP%

     

    запускаю другую задачу в той же сессии

    C:\>echo %CLIENTIP%
    10.10.10.1

    как это победить не пойму , мне надо чтобы эта переменная прописывалась при логине

    именно wscript ом и чтобы потом можно было пользовать её

     

    25 октября 2006 г. 5:29
  • Никак не победите. Дело в том, что каждый процесс получает свою копию переменных окружения на момент его (процесса) создания. Поэтому вы и не видите свою новую переменную окружения до тех пор, пока не создали новый процесс.
    25 октября 2006 г. 6:02
    Модератор
  • Что то я не понял

    т.е. другими словами если я создаю переменную окружения в скрипте логина то я ее ни когда не увижу ?

    этого не может быть .

    25 октября 2006 г. 7:40
  • Увидите

    Сначала запускается корневой процесс пользователя, затем дочерний процесс логон скрипта, который создает переменную окружения, завершается, но среда корневого процесса осталась прежней - переменную не видим, запукаем новый процесс - видим новое окружение и новую переменную.

     

    Причина видимо в том, что скрипт пишет переменную прямо в реестр, но не в окружение вышестоящего процесса.

    25 октября 2006 г. 11:10
    Модератор
  • как мне тогда писать переменную в окружение вышестоящего процесса ?
    26 октября 2006 г. 8:45
  • Сформулируйте задачу, которую вы хотите решить. А то не понятен ваш выбор средств решения.

    Так сначала вы используете wscript, а потом команду SET. Примените wscript и во втором случае.

    26 октября 2006 г. 10:42
    Модератор
  • IMHO, можно использовать стартап (а не логон) скрипт и создавать не пользовательскую (а системную) переменную окружения. Тогда во время запуска логон скриптов нужная вам переменная окружения всегда будет существовать для любого процесса.

    2 sie +1

    полностью согласен с тем, что

     sie написано:

    Сформулируйте задачу, которую вы хотите решить. А то не понятен ваш выбор средств решения.


     

    28 октября 2006 г. 18:17
  • sie формулирую

     есть прога которая запускает cmd-файлик в котором используется ip клиента который прописан явно

    пример:

     ping 10.10.10.12 далее анализируем результат . ...

    необходимо привести к виду

    ping %CLIENTIP% и т.д.

    как записать переменную окружения я уже разобрался см. выше (wscript  при логине)

    но  ее увидеть далее немогу , не пойму почему .

    системная и юзерская переменная не пойдет т.к. под одним юзером могут ходить с разных ip

     

     

     

     

    30 октября 2006 г. 7:52
  •  Egor_s написано:

    sie формулирую

     есть прога которая запускает cmd-файлик в котором используется ip клиента который прописан явно

    пример:

     ping 10.10.10.12 далее анализируем результат . ...

    необходимо привести к виду

    ping %CLIENTIP% и т.д.

    как записать переменную окружения я уже разобрался см. выше (  при логине)

    но  ее увидеть далее немогу , не пойму почему .

    системная и юзерская переменная не пойдет т.к. под одним юзером могут ходить с разных ip

     

    Делайте все через wscript, в том числе запуск вашей программы.

    30 октября 2006 г. 11:41
    Модератор
  • а по существу кто нить может помочь

    но через перепенную окружения ???

    31 октября 2006 г. 7:46