Постоянное изменение переменных среды в 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) флаг