0

PHP を使用して新しいレジストリ値を作成するにはどうすればよいですか?

次のコードは機能しません。

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);

7-ZIPinsideという名前のキーが既に存在しますHKEY_LOCAL_MACHINE\SOFTWARE

apache/logs 内の error.log にエントリがありません。

To: Tomalak これらのアクセス許可/ID を変更するにはどうすればよいですか? PHPでそれを行う方法はありますか?

私は何をしようとしていますか: MySql と PHP にバンドルしている Adob​​e AIR アプリケーションがあります。このアプリケーションがマシンにインストールされている場合、アプリケーションが実行されるたびに海賊版ではないかどうかを確認できるように、マシンに関する情報をレジストリに入力したいと考えています。

4

1 に答える 1

1

デフォルトの権限/IDに変更を加えない限り、Webサーバープロセス(PHPが実行されるプロセス)にはへの書き込み権限がありませんHKEY_LOCAL_MACHINE

それ以外は、レジストリの用語が少し混乱しています。

レジストリは「キー」と「値」で構成されています。各値には名前(およびタイプ)があり、各キーには複数の値とキーを含めることができます。フォルダはありません。

その観点から、次のように関数をリファクタリングすることをお勧めします。

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;
}
于 2009-04-02T13:10:43.357 に答える