你好,我想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
变量中。要运行此命令,您需要成为系统管理员。
如果这对任何人来说都是有用的,那就欢呼吧:-)