Привет я хочу обновить 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"