windows - PHP: Oprettelse af en mappe i registreringsdatabasen

Indlæg af Hanne Mølgaard Plasc

Problem



Hvordan opretter jeg en ny registreringsværdi ved hjælp af PHP?


Følgende kode virker ikke:


function registry\_write($folder, $key, $value, $type="REG\_SZ")
{
  $WshShell = new COM("WScript.Shell");

  $registry = "HKEY\_LOCAL\_MACHINE\SOFTWARE\" . $folder . "\" . $key;
  //$result = $WshShell->RegRead($registry);
  $result = $WshShell->RegWrite($registry, $value, $type);

  return($result);
}

$folder = "7-ZIP";
$key = "Mac";
$value = "123";

registry\_write($folder,$key,$value);


Der er allerede en nøgle hedder 7-ZIP inde i HKEY\_LOCAL\_MACHINESOFTWARE.


Der er ingen post i error.log inde i apache/logs.


Til: Tomalak
Hvordan ændrer jeg disse tilladelser/identiteter? Er der en måde at gøre det med php?


Hvad forsøger jeg at gøre:
Jeg har en Adobe AIR applikation, som jeg binder sammen med MySql og PHP. Når denne applikation er installeret på en maskine, vil jeg gerne have nogle oplysninger om maskinen i registreringsdatabasen, så hver gang
programkørsler Jeg kan kontrollere, om det ikke er blevet piratkopieret.

Bedste reference


Medmindre du har foretaget ændringer til standard tilladelser/identiteter, har din webserverproces (den ene PHP kører i) ikke skrive tilladelse til HKEY\_LOCAL\_MACHINE.


Bortset fra det, fik du din registreringsdatabase terminologi lidt blandet op.


Registreringsdatabasen består af 'nøgler' og 'værdier'. Hver værdi har et navn (og en type), hver nøgle kan indeholde flere værdier og nøgler. Der er ingen mapper.


I det lys vil jeg foreslå at refactoring din funktion som denne:


function registry\_write($key, $name, $value, $type="REG\_SZ") {
  $WshShell = new COM("WScript.Shell");

  $path = "HKLM\SOFTWARE\$key\$name";

  try {
    $WshShell->RegWrite($path, $value, $type);
    return true;
  }
  catch (Exception $e) {
    // echo or log the error
  }

  return false;
}