从 PHP 脚本更新 PATH 变量

从 PHP 脚本更新 PATH 变量

你好,我想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%

该文件运行并在用户变量(而不是系统变量)中创建路径变量。

有人能指导我解决这个错误以及如何处理这种情况吗?

此致

答案1

需要说明的是,如果php_com_dotnet.dll启用了php.ini(并且脚本以足够的权限运行),则以下 PHP 代码将会运行:

<?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";

答案2

如果您运行 REGEDIT,导航到您尝试更新的路径,右键单击,选择导出,您将能够保存一个示例 .REG 以查看您需要在 PHP 中重新创建的内容。

你需要一个标题:

Windows Registry Editor Version 5.00

您需要使用双引号:

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

Windows 路径使用反斜杠,而不是正斜杠,并且需要用另一个斜杠进行“转义”。

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

答案3

嗨,我已经解决了这个问题。我通过创建文件解决了这个问题.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变量中。要运行此命令,您需要成为系统管理员。

如果这对任何人来说都是有用的,那就欢呼吧:-)

相关内容