Постоянное изменение переменных среды в Windows

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

enter image description here

enter image description here

enter image description here

Выполнение этого приведет к изменению домашнего диска на C:

Но тогда, когда я проверяю переменную окружения:

enter image description here

Он по-прежнему H:, при перезапуске системы переменные Enviroment в настройках Windows также вернутся к H:/

Я также попытался изменить его следующим образом:

enter image description here

Кажется, что работает, но если я открою новый cmd, он вернется обратно в H:/

Теперь я пытаюсь сделать это, чтобы OpenSSH распознал C как мой домашний каталог, а не H: это сетевой диск, заставляющий OpenSSH не работать, если я не подключился к моей университетской сети через VPN.

Что я могу сделать, чтобы установить это постоянно и в глазах OpenSSH?

Ответ 1

Нигде не упоминается зависимость между значением HOMEDRIVE и значением HOMEDIRECTORY, что происходило (я думаю), заключается в том, что он не смог сопоставить домашний каталог с HOMEDRIVE и, следовательно, по умолчанию вернулся к безопасному значению (C:)

Я написал script для обновления локального AD, заменив значения в [] вашими значениями. Скопируйте и вставьте файл .vbs и дважды щелкните по нему, чтобы запустить его.

Set objUser = GetObject("WinNT://[COMPUTERNAME]/[USERNAME],user")
objUser.homeDirDrive = "H:"
objUser.HomeDirectory = "[URNPATH]"
objUser.SetInfo

например.

Set objUser = GetObject("WinNT://UQBDART-2328/BEN,user")
objUser.homeDirDrive = "H:"
objUser.HomeDirectory = "\\SERVER\SHARE"
objUser.SetInfo

запустите это, перезагрузите и проверьте. Это сработало для меня.

Ответ 2

Похоже, что профиль AD в домене переписывает определяемые пользователем переменные. Я вижу, что ваш скриншот говорит, что вы подключены к домену eait.org.edu.au. Это станет причиной вашей проблемы. Чтобы включить некоторые подробности здесь, которые я заметил в другом месте, это может помочь вам:

HOMEDRIVE, HOMEPATH и HOMESHARE устанавливаются и обновляются через Active Directory. HOMEDRIVE и HOMEPATH установлены даже без набора дисков на диске; однако они будут переопределены любыми свойствами учетной записи пользователя, установленными в AD.

Также см. эти статьи в формате KB:

http://support.microsoft.com/kb/841343
http://support.microsoft.com/kb/237566
http://support.microsoft.com/kb/101507 

На боковой ноте по-другому:

- В прошлом я создал новый экземпляр исполняемого файла оболочки командной строки Windows, который автоматически запускает пользовательский script, поэтому каждый раз, когда вы запускаете оболочку, переменная среды может быть переопределена.

-Чтобы сделать это, вы можете просто поместить отправленный вами код для изменения переменной среды в пакетный script, который будет храниться там, где вам нравится, а затем отредактировать ярлыки (ы), используемые для запуска оболочки, перейдя в свойствa > затем измените поле Target:% SystemRoot%\system32\cmd.exe/K "C:\Documents and Settings\Администратор\Мои документы \customhellscript.cmd" (Очевидно, что часть пути после /K - это местоположение вашего пользовательского script)

Таким образом, если вы все равно используете openSSH поверх консоли, у него всегда будет установлен homedrive.

Ответ 3

Изменение этих значений переменных среды не поддерживается, по крайней мере, оно не будет работать так, как вы ожидаете, поскольку Windows меняет их.

В соответствии с этой статьей базы знаний Microsoft (KB841343), вы должны использовать политики, если вам нужно изменить эти параметры. В статье также содержатся ссылки для того, как это сделать (но лично я никогда не пробовал). Обратите внимание, что статья изначально была написана для Windows 2000, но я бы сильно подозревал, что она по-прежнему актуальна для текущих версий Windows.

Ответ 4

Во времена DOS переменные среды были частью Программного Segement, что означало, что вы в основном получили локальный snapshop переменных, ограниченных областью действия этой программы.

Я предполагаю, что Windows этого не изменила, и переменные среды, доступные для окна CMD, имеют только область этого окна и любые последующие окна, которые он порождает. Это подтверждается этим небольшим экспериментом:

в окне типа CMD

set homedrive=h:\

а затем протестируйте его, набрав

set h

из этого же типа окна

start cmd

и в этом новом окне введите

set h

когда я это сделал, я получаю HOMEDRIVE = H:\

если я тогда просто открою новое окно CMD из меню "Пуск" и сделаю то же самое SET H, что я получил HOMEDRIVE = C:\

Я ничего не знаю об OpenSSH, но я подозреваю, что START CMD получил обновленную переменную среды HOMEDRIVE, если вы напишете пакет для обновления переменной окружения, а затем выполните OpenSSH, который будет работать.

Ответ 5

В окнах 8:

  • Нажмите клавишу "Windows".
  • введите "системные переменные среды".
  • Разрешить "Предварительные настройки системы" внести изменения.
  • Выберите вкладку "Предварительный просмотр".
  • Нажмите "Enviroment Variables...".
  • Дважды нажмите "Путь" в "Пользовательская переменная для XXXXXXXX"
  • Добавьте в конце переменную новый путь, который вы хотите разделить точкой с запятой.

    например. C:\Program Files \; C:\Python27 \ shareeditdelete (1) флаг