[Server] [Помощь] Задание переменных окружения

Статус
В этой теме нельзя размещать новые ответы.

poison-b13

Постоялец
Регистрация
21 Июл 2009
Сообщения
64
Реакции
5
ОСь: Win 2003 Enterprise SP2 Eng

Добрый день.
Ковырялся в нете нашел список переменных окружения, хочу сделать чтоб каждый юзер(если имеет админ права) ставил софт в свою папку,
например с:\prog_files\{username}
есть в системе переменная окружения PROGRAMFILES, если выполнить в командной строке echo %PROGRAMFILES% то покажет текущий путь.
Пробую задавать через установку переменных окружения для пользователя(мой_комп->свойства->допольнительно->переменные среды-> верхнее поле)
софт не принимает, когда запускаю установку чего либо, а когда задаю через реестр(HKLM\Software\Microsoft\Windows\CurrentVersion\)
параметр ProgramFilesDir = c:\prog_files\%USERNAME% не понимает значение %USERNAME% софт ставится в папку %USERNAME%

Буду признателен за любую помощь.
 
Попробуй такую конструкцию.
ProgramFilesDir = c:\%PROGRAMFILES%\%USERNAME%

ЗЫ
И внимательно перечитай свой пост,ну нифигаж не понятно.
Ты излагай так, что люди которые будут это читать, вообще невкурсе твоих мыслей и действий.
параметр ProgramFilesDir = c:\prog_files\%USERNAME% то не понимает значение %USERNAME% софт ставится в папку %USERNAME%
 
ProgramFilesDir = c:\%PROGRAMFILES%\%USERNAME%
не проходит, по той причине что переменная %PROGRAMFILES% уже сама по себе содержит имя диска, непонятно почему из реестра система не понимает %USERNAME% , по логике с таким параметром она должна брать имя текущего юзера, и ставить софт в соответствующую папку, но она этого не делает.
 
Из варианта что выше.
Попробую юзеру папку создать руками.
При определении переменной добавь в конце \
ProgramFilesDir = c:\%PROGRAMFILES%\%USERNAME%\

Чисто теоритически могу предположить.

Может переопределить саму переменную %PROGRAMFILES% из "C:\Program Files" => "C:\Program Files\%USERNAME%"

PS
Хотя я даже понятия не имею как это будет выглядеть, применять на свой страх и риск.
 
Может переопределить саму переменную %PROGRAMFILES% из "C:\Program Files" => "C:\Program Files\%USERNAME%"
по правде говоря пункт реестра
Код:
HKLM\Software\Microsoft\Windows\CurrentVersion\
ProgramFilesDir = c:\Program Files
так он выглядит в оригинале
и отвечает за определение пути к папке c:\Program Files, переопределение собсно говоря возможно, на сайте мелкософта, описано именно изменение этого пункта реестра, и все работает, т.к. система сама потом докладывает нехватающие файлы в новую папку.
в вот тема со слешем в конце не катит, ибо я так тоже пробовал, хотелось именно понять почему система не понимает переменную %USERNAME% если ее задавать из реестра.
 
cmd.exe:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\ZCFD>set
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\ZCFD\Application Data
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=2CFD
ComSpec=C:\WINDOWS\system32\cmd.exe
EMAIL=H:\backup\theBat!\Mail
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\ZCFD
LOGONSERVER=\\2CFD
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 7 Stepping 0, AuthenticAMD
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0700
ProgramFiles=C:\Program Files
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\ZCFD\LOCALS~1\Temp
TMP=C:\DOCUME~1\ZCFD\LOCALS~1\Temp
USERDOMAIN=2CFD
USERNAME=ZCFD
USERPROFILE=C:\Documents and Settings\ZCFD
windir=C:\WINDOWS
C:\Documents and Settings\ZCFD>set ProgramFiles=C:\Program Files\%USERNAME%
C:\Documents and Settings\ZCFD>set
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\ZCFD\Application Data
CLIENTNAME=Console
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=2CFD
ComSpec=C:\WINDOWS\system32\cmd.exe
EMAIL=H:\backup\theBat!\Mail
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\ZCFD
LOGONSERVER=\\2CFD
NUMBER_OF_PROCESSORS=1
OS=Windows_NT
Path=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 7 Stepping 0, AuthenticAMD
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0700
ProgramFiles=C:\Program Files\ZCFD
PROMPT=$P$G
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\ZCFD\LOCALS~1\Temp
TMP=C:\DOCUME~1\ZCFD\LOCALS~1\Temp
USERDOMAIN=2CFD
USERNAME=ZCFD
USERPROFILE=C:\Documents and Settings\ZCFD
windir=C:\WINDOWS
C:\Documents and Settings\ZCFD>
в чем проблема то ?
хз как с реестром а в консоли все ок
ну максимум скрипт в автозагрузку прописать
 
cmd.exe:
в чем проблема то ?
хз как с реестром а в консоли все ок
ну максимум скрипт в автозагрузку прописать
все то это хорошо.

ZCFD вы софт то, сам ставить пробовали? при таком раскладе, он все равно почему то ломится в C:\Program Files
 
2 poison-b13 : какой именно софт

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

предлагаю сменить значение HOMEDRIVE и посмотреть еще раз, куда софт будет ставиться
 
2 poison-b13 : какой именно софт
банально ты слишком хорошо думаешь о тех кто пишет инсталлеры
Далеко не все ориентируются на переменные окрыжения, зачастую только на диск, т.к. редко меняется значение этой переменной
предлагаю сменить значение HOMEDRIVE и посмотреть еще раз, куда софт будет ставиться

ну на реестр то ориентируются! ставится же софт в папку оторую в реестре прописываю, тока переменная %USERNAME% не отрабатывается,
а вот софт ну любой, предположим тот же winrar или 7zip.
 
Ок
если тебе нужно редактировать реестр , то предлагаю не заморачиваться
а прописать в автозагрузку скрипт

EditPrFDir.cmd
Код:
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion /v ProgramFilesDir /t REG_SZ /d "C:\Program Files\%USERNAME%" /f
проверил у себя - работает

ну разве что спрятать если нужно от юзверей

по ключам - добавляем ключ с заданным именем и значением
/f - перезаписывает существующие данный

в общем читай в консоли
reg /?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху