Назад | Перейти на главную страницу

Обновление переменной 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%

Эти файлы запускаются и создают переменную пути в пользовательских переменных, а не в системной переменной.

Может ли кто-нибудь рассказать мне об этой ошибке и как справиться с этой ситуацией?

Наилучшие пожелания

Для записи следующий код 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";

Привет, я решил эту проблему. Я решил это, создав .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 переменная. Для запуска вам необходимо быть администратором системы.

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

Если вы запустите REGEDIT, перейдите по пути, который вы пытаетесь обновить, щелкните правой кнопкой мыши, выберите «Экспорт», вы сможете сохранить пример .REG, чтобы увидеть, что вам нужно воссоздать в PHP.

Вам нужен заголовок:

Windows Registry Editor Version 5.00

Вам нужно использовать двойные кавычки:

"Path"="Something" not 'Path'='Something'

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

"C:\\Folder\\File.exe" not "C:/Folder/File.exe"