Обновление переменной PATH из PHP-скрипта
Привет, я хочу обновить Path
переменная окружения через PHP
скрипт. Я сгенерировал .reg
использование файла PHP
, Содержание reg
файл выглядит как
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment]
'PATH'='c:/abc/test/ImageMagick-6.7.8-Q8/convert.exe'
Когда я запускаю этот файл, на последнем шаге я вижу сообщение об ошибке
Cannot Import c:\User\qarni\downloads\13633555989_.reg: The specified file is not a registry script. You can only import binary registry files from within the registry script
Я пытался сделать эту задачу, используя setx
и мой файл.bat выглядит
@echo off
set KeyName=Path
set KeyValue="D:\songs;%PATH%"
setx %KeyName% %KeyValue%
Эти файлы запускаются и создают переменную пути в пользовательских переменных, а не в системной переменной.
Может ли какой-нибудь орган рассказать мне об этой ошибке и как справиться с этой ситуацией?
С уважением
3 ответа
Для записи, следующий код PHP будет работать, если php_com_dotnet.dll
включен в php.ini
(и скрипт выполняется с достаточными правами):
<?php
$path_to_add = "C:\\new\\path\\";
define("REG_VAL", "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment\\Path");
$WshShell = new COM("WScript.Shell");
$WshShell->RegWrite(REG_VAL, $WshShell->RegRead(REG_VAL) . ";" . $path_to_add);
echo "The updated PATH in the registry is:\r\n\r\n";
echo $WshShell->RegRead(REG_VAL) . "\r\n";
Если вы запустите REGEDIT, перейдите по пути, который вы пытаетесь обновить, щелкните правой кнопкой мыши, выберите "Export", вы сможете сохранить пример.REG, чтобы увидеть, что вам нужно заново создать в PHP.
Вам нужен заголовок:
Windows Registry Editor Version 5.00
Вам нужно использовать двойные кавычки:
"Path"="Something" not 'Path'='Something'
Пути Windows используют обратную косую черту, а не прямую, и им нужно "убежать" с другой косой чертой.
"C:\\Folder\\File.exe" not "C:/Folder/File.exe"
Привет, я решил эту проблему. Я решил это, создав .bat
файл. Содержание .bat
файл выглядит как
@echo off
set KeyName=Path
set KeyValue="D:\songs;%PATH%"
setx -m %KeyName% %KeyValue%
-m
используется, если вы хотите установить его на system level for all users
, Если вы хотите, чтобы он был установлен только для текущего пользователя, то удалите -m
, Приведенная выше команда установит D:\songs
в окружении Path
переменная. Для этого вам необходимо быть администратором системы.
Приветствия, если это полезно для любого:-)