Обновление переменной 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 переменная. Для этого вам необходимо быть администратором системы.

Приветствия, если это полезно для любого:-)

Другие вопросы по тегам