2012-01-02 4 views
0

Я делаю установщик, который будет на 100% в зависимости от системной переменной, такой как% TEMP% или% Path%, пользователи сначала дважды щелкают windows.bat файл.Как создать постоянную системную переменную с помощью BATCH или VBS?

Но как настроить постоянную системную переменную в Windows XP, Vista, 7, 8 с помощью VBS или BATCH?

Я пробовал с BATCH, но в Windows XP большинство пользователей не имеют setx по умолчанию, поэтому я хочу избежать использования этой техники. Есть ли лучший способ сделать это?

C:\Documents and Settings\sun>REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Ses 
sion Manager\Environment" /v MyApplicationWillUsetThis /d "C:\WhatEverPathToIncl 
udeHereQuestionMark" 

The operation completed successfully 

C:\Documents and Settings\sun>REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Ses 
sion Manager\Environment" /v MyApplicationWillUsetThis /d "C:\WhatEverPathToIncl 
udeHereQuestionMark" 
Value MyApplicationWillUsetThis exists, overwrite(Y/N)? Y 

The operation completed successfully 
+0

Попробуйте сделать ваш монтажника только 0% в зависимости от системных переменных. –

+1

@UweKeim: установщик 0%, но приложение на 100% требует некоторых настраиваемых переменных системы. Специально мои сторонние библиотеки. – YumYumYum

ответ

3

Вы можете создать значение REG_SZ под HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ окружающей среды в реестре. Имя значения указывает имя переменной среды, значение указывает значение переменной среды.

Вы также можете изменить существующие значения.

Для изменения реестра вы можете использовать метод RegRead и RegWrite объекта WScript.Shell. Например, посмотрите на Manipulating the System Registry.

Редактировать: Вы можете сначала удалить существующее значение и заново создать его позже.

REG DELETE "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MyApplicationWillUsetThis /f 
REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v MyApplicationWillUsetThis /d "C:\WhatEverPathToIncludeHereQuestionMark" 
+1

1) http://ss64.com/nt/reg.html 2) REG ADD "HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment"/v MyApplicationWillUsetThis/d "C: \ WhatEverPathToIncludeHereQuestionMark"? – YumYumYum

+1

Да, это еще один способ сделать это. –

+0

Я сделал это как выше моего редактирования. Но он спрашивает Y или N. Как явно применить «Да всегда» в команде уже? – YumYumYum

2

Как установить переменные окружения из VBScript

Set WshShell = CreateObject("Wscript.Shell") 

' set a permanent environment variable %MyVarName% for all users 
WshShell.Environment.item("MyVarName") = "MyVarValue" 

Если указанные настройки не является постоянным, попробуйте это. Это установит постоянную переменную среды для всех пользователей. Вы можете использовать категории «Система», «Пользователь», «Летучие» и «Процессы» в коллекции «Окружающая среда».

With WSHShell.Environment("SYSTEM") 
    .item("MyVarName") = "MyVarValue" 
End With 

Вы также можете использовать ExpandEnvironmentStrings читать переменные окружения или заменить их с их значениями в строках типа линии длинной команды.

sValue = WshShell.ExpandEnvironmentStrings("%MyVarName%") 

Для работы с реестром попробовать

sRegKey = "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\MyVarName" 

sValue = WshShell.RegRead(sRegKey) 

' don't write if no change is required. 
If sValue <> sNewValue Then WshShell.RegWrite sRegKey , sNewValue 
Смежные вопросы