PHPマスター| PHPでWindowsレジストリにアクセスします
キーテイクアウト
- 構成情報を保存する階層構造のデータベースであるWindowsレジストリは、win32std拡張機能を使用してPHPでアクセスできます。 Windowsレジストリは、Keysとして知られる5つの主要なグループに分けられます:HKEY_CURRENT_CONFIG、HKEY_LOCAL_MACHINE、HKEY_USERS、HKEY_CLASSES_ROOT、およびHKEY_CURRENT_USER。各キーには、他のサブキー、構成値、またはその両方を含むサブキーが含まれています。
- reg_open_key()関数はレジストリへの接続を開き、リソースを返します。リソースは、他のレジストリ関数とともに使用してその接続に作用することができます。 reg_close_key()関数は接続を閉じます。 reg_set_value()関数は、レジストリに値を書き込むために使用され、既存の値を上書きするか、新しい値を作成します。 Windowsレジストリは、Webベースのアプリケーションの構成情報の保存、デスクトップアプリケーションのアプリケーションデータとユーザー設定の保存、USBドングルなどのハードウェアデバイスの存在の確認などの実用的なアプリケーションに使用できます。ただし、レジストリの変更は、システムの操作に影響を与える可能性があるため、注意して行う必要があります。
レジストリレイアウト
レジストリは、Windowsオペレーティングシステムの暗くて危険で怖い場所であるという評判があります。 これはおそらく誇張された恐怖ですが、それでもマイクロソフトのレジストリマントラを繰り返します。 不適切な変更は、オペレーティングシステムを再インストールする必要がある可能性のある深刻な問題を引き起こす可能性があります。」 それで、この暗くて怖い場所はどのように見えますか? Windowsレジストリは、キーとして知られる5つの主要なグループに分割されます。 HKEY_CURRENT_CONFIG hkey_local_machineこのキーには、プリンター、ソフトウェア、ネットワーキング情報など、マシンの構成情報が含まれています。 キーは最初にロードされ、次にユーザーのプロファイルからのエントリがさまざまな値をオーバーライドします。 このキーはHKLMとして略されていることがわかります。 hkey_users
このキーは、マシン上のローカルユーザーアカウントのすべてのプロファイルを保持しています。 ユーザーのスクリーンセーバーの選択、テーマ情報、その他の設定などがここに保存されます。 このキーはHKUとして略されます。 HKEY_CLASSES_ROOT hkey_current_user このキーは、現在ログインしているユーザーのhkey_usersのプロファイルを指すエイリアスです。 このキーはHKCUとして略されていることがわかります。 各キーには、他のサブキー、構成値、またはその両方を含むサブキーが含まれています。 hkey_current_userの下で作業するだけで、いくつかのCLIスクリプトとサンドボックスをいじくり回すのに十分です。 Microsoftのセキュリティ許可を快適に操作するシステム全体のアプリケーションデータと状況には、hkey_local_machineのみを使用します。あなたの状況に正しいことを理解し、どのアカウントPHPが実行されているかを知り、キーを適切に作成します。
サンドボックスの作成
特に開発する場合は、安全のためにスクリプトで使用するために特別なキーを設定することをお勧めします。エラーは人間であり、私たちは誤って重要なものを上書きしたくありません。 組織は、指定されたキーを設定するもう1つの理由です。 レジストリには多くの情報が保存されており、自分の価値を簡単に見つけることができるようにしたいと考えています。 レジストリエディターは、レジストリを表示および編集するために使用されるMicrosoftプログラムです。サンドボックスを作成するには、開始し、検索バーの「Regedit」と入力し、表示される結果リストでRegedit.exeを選択します。 左ペインには既存のキーのツリー構造が表示され、右ペインには内部に保存されている値が表示されます。 hkey_current_userノードを展開し、ソフトウェアキーを右クリックして、ポップアップコンテキストメニューから[新しい>キー]を選択します。 または、矢印キーを使用してツリーを通過して、ソフトウェアキーが強調表示され、[編集]メニューから[新しいキー]を選択するようにすることもできます。キーの名前を提供し、Enterを押します。
reg_open_key()関数は、レジストリへの接続を開き、リソースを返します。 このリソースは、他のレジストリ関数とともに使用され、その接続に作用します。 reg_close_key()関数は接続を閉じます。 reg_open_key()は、2つの引数を取ります。最初は、5つの主要なレジストリグループの1つを表す定義済み定数、次に目的のキーへのパスの残りです。
オープン接続ができるようになったので、reg_enum_key()、reg_enum_value()、reg_get_value()関数を使用してレジストリから情報を取得できます。 リソースがreg_enum_key()に渡される場合、現在のキーの下にサブキーの配列が返されます。 特定のインデックスでサブキーを取得するために、整数値を渡すこともできます。<span><span><?php </span></span><span><span>$keyConst = HKEY_CURRENT_USER; </span></span><span> </span><span><span>// backslash is used as an escape so it must be escaped itself </span></span><span><span>$key = "Software\Intel"; </span></span><span> </span><span><span>// open the registry key HKCUSoftwareIntel </span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) { </span></span><span> <span>throw new Exception("Cannot access registry."); </span></span><span><span>} </span></span><span><span>... </span></span><span> </span><span><span>reg_close_key($reg);</span></span>
<span><span><?php </span></span><span><span>// retrieve an array of subkeys under the current key </span></span><span><span>$subkeys = reg_enum_key($reg); </span></span><span><span>foreach ($subkeys as $index => $subkey) { </span></span><span> <span>echo "The subkey at " . $index . " is " . $subkey . "n"; </span></span><span><span>} </span></span><span> </span><span><span>// retrieve a specific subkey </span></span><span><span>$index = 2; </span></span><span><span>$subkey = reg_enum_key($reg, $index); </span></span><span><span>echo "The subkey at " . $index . " is " . $subkey . "n";</span></span>
<span><span><?php </span></span><span><span>// retrieve an array of values under a given key </span></span><span><span>$values = reg_enum_value($reg); </span></span><span><span>foreach ($values as $index => $value) { </span></span><span> <span>echo "The value at " . $index . " is " . $value . " and stores "; </span></span><span> <span>echo reg_get_value($reg, $value) . "n"; </span></span><span><span>} </span></span><span> </span><span><span>// retrieve a specific value given the index </span></span><span><span>$index = 1; </span></span><span><span>$value = reg_enum_value($reg, $index); </span></span><span><span>echo "The value at " . $index . " is " . $value . " and stores "; </span></span><span><span>echo reg_get_value($reg, $value) . "n";</span></span>
レジストリを読んで書き込むときに選択できるデータ型はいくつかあります。 PHPの動的な性質のために、一般的にほとんど結果はほとんどありませんが、値を書くときにタイプを指定する必要があります。ほとんどの場合、reg_szまたはreg_dwordを使用していることに気付くでしょうが、拡張機能によって公開されているデータ型のリストを次に示します。
- reg_dword - 値は32ビットの長い整数として保存されます
- reg_sz - 値は固定長文字列として保存されます
- reg_expand_sz - 値は可変長文字列
- として保存されます reg_multi_sz - 値は、スペースやコンマなどの区切り文字で区切られたアイテムのリストです
- reg_binary - 値はバイナリ文字列
- です reg_none - 値には特定のデータ型が関連付けられていません
<span><span><?php </span></span><span><span>$keyConst = HKEY_CURRENT_USER; </span></span><span> </span><span><span>// backslash is used as an escape so it must be escaped itself </span></span><span><span>$key = "Software\Intel"; </span></span><span> </span><span><span>// open the registry key HKCUSoftwareIntel </span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) { </span></span><span> <span>throw new Exception("Cannot access registry."); </span></span><span><span>} </span></span><span><span>... </span></span><span> </span><span><span>reg_close_key($reg);</span></span>
例 - USBドライブドングル
レジストリを操作するための実用的な使用があるかどうか疑問に思うかもしれません。 Webベースのアプリケーションでは、構成情報をレジストリに保存できます。デスクトップアプリケーションを作成した場合、レジストリは、アプリケーションデータからユーザー設定まであらゆる種類の情報を保存するのに適した場所になる可能性があります。 Windows自体は、あらゆる種類の興味深いハードウェアと状態関連情報をレジストリに書き込みます。 PHPアプリケーションが、それを実行するためにサーバーに接続する必要があるような方法で当社のPHPアプリケーションがライセンスされているとします。 PHPはドングルの存在をどのように検出できますか? Windowsの答えはレジストリにあります!各デバイスには一意の識別子があるため、スクリプトは、ドングルがプラグインされているかどうかを判断するために起動するときに識別子の適切なキーを検索できます。 最初のステップは、デバイスの識別子を決定することです。この例では、商品サムドライブを使用します。ドライブをコンピューターのUSBポートに接続してから開始し、検索バーに「デバイス」と入力し、表示される結果リストでデバイスマネージャーを選択します。 デバイスマネージャーでデバイスを見つけ、エントリを右クリックし、コンテキストメニューから[プロパティ]を選択します。次に、[プロパティ]ウィンドウの[詳細]タブに移動し、ドロップダウンリストから[デバイスインスタンスパス]を選択します。値の終わりに向けた16進数のシーケンスは、デバイスID(赤でマークされています)です。
<span><span><?php </span></span><span><span>$keyConst = HKEY_CURRENT_USER; </span></span><span> </span><span><span>// backslash is used as an escape so it must be escaped itself </span></span><span><span>$key = "Software\Intel"; </span></span><span> </span><span><span>// open the registry key HKCUSoftwareIntel </span></span><span><span>if (!($reg = @reg_open_key($keyConst, $key))) { </span></span><span> <span>throw new Exception("Cannot access registry."); </span></span><span><span>} </span></span><span><span>... </span></span><span> </span><span><span>reg_close_key($reg);</span></span>
この記事の過程で、Windowsレジストリとは何か、その中にどの情報が見つかるかについての小さなサンプルが見られました。独自の構成データを記述することも、Win32stD拡張子によって提供された関数を使用して、情報を読み返すこともできます。 ちなみに、Win32stD拡張機能は、レジストリへのアクセスだけではありません。興味のある方は、wildphp.free.fr/wiki/doku.php?id=win32std:indexをチェックして、他に何が提供されるかを確認してください。 Fotoliaを介した画像 php
からのWindowsレジストリへのアクセスに関するよくある質問(FAQ)
PHPからWindowsレジストリにアクセスするにはどうすればよいですか?
PHPからWindowsレジストリにアクセスするには、PHPのCOMクラスを使用することで実現できます。このクラスにより、PHPはWindowsレジストリを含む任意のCOMオブジェクトと対話できます。 COMクラスの新しいインスタンスを作成してから、RegReadメソッドを使用してレジストリから値を読み取ることができます。ただし、この方法ではレジストリにアクセスするために正しい権限が必要であることに注意してください。これは、オペレーティングシステムとレジストリを使用することを選択したアプリケーションに低レベルの設定を保存します。システム情報を取得したり、特定のソフトウェアの存在を確認したり、システム設定を変更するなど、さまざまな理由でPHPからアクセスする必要がある場合があります。ただし、システムの操作に影響を与える可能性があるため、レジストリの変更は注意して実行する必要があります。PHPからWindowsレジストリに書き込みますか? comクラスのregwriteメソッドを使用したphp。ただし、誤った修正により、オペレーティングシステムを再インストールする必要がある深刻な問題を引き起こす可能性があるため、これは非常に注意してください。PHPからWindowsレジストリにアクセスするには、どのような権限がありますか?
PHPからWindowsレジストリにアクセスするには、管理特権が必要です。これは、レジストリに重要なシステムとアプリケーションの設定が含まれているためです。 Webサーバーからスクリプトを実行している場合、サーバーのユーザーアカウントには必要なアクセス許可も必要です。キーと値を備えた木として階層的に編成されています。キーはフォルダーに似ており、値はキー内のデータエントリです。各キーにサブキーを含めることができ、各サブキーにはさらにサブキーが含まれ、ツリー構造を形成できます。 PHP、エラーは標準のPHPエラー処理機能を使用して処理できます。たとえば、set_error_handler関数を使用してカスタムエラーハンドラーを定義できます。非ワインドシステムのPHPからのレジストリ。 Windowsレジストリは、Windowsオペレーティングシステムに固有の機能です。 comオブジェクト。 com(コンポーネントオブジェクトモデル)は、Microsoftによって導入されたソフトウェアコンポーネントのバイナリインターフェイス標準です。 Windowsレジストリを含むPHPが任意のcomオブジェクトと対話することができます。 。これは、comクラスのregdeleteメソッドを使用して実行できます。ただし、間違ったキーを削除すると深刻な問題を引き起こす可能性があるため、これは非常に注意してください。
Windowsレジストリの変更のリスクは何ですか?誤った変更は、オペレーティングシステムを再インストールする必要がある可能性のある深刻な問題を引き起こす可能性があります。したがって、変更を加える前にレジストリをバックアップし、自分がしていることに自信がある場合にのみ変更を加えることをお勧めします。
以上がPHPマスター| PHPでWindowsレジストリにアクセスしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

PHPは依然として動的であり、現代のプログラミングの分野で重要な位置を占めています。 1)PHPのシンプルさと強力なコミュニティサポートにより、Web開発で広く使用されています。 2)その柔軟性と安定性により、Webフォーム、データベース操作、ファイル処理の処理において顕著になります。 3)PHPは、初心者や経験豊富な開発者に適した、常に進化し、最適化しています。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。

PHPとPythonには独自の利点と短所があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1.PHPは、大規模なWebアプリケーションの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンスと機械学習の分野を支配しています。

PHPは、特に迅速な開発や動的なコンテンツの処理に適していますが、データサイエンスとエンタープライズレベルのアプリケーションには良くありません。 Pythonと比較して、PHPはWeb開発においてより多くの利点がありますが、データサイエンスの分野ではPythonほど良くありません。 Javaと比較して、PHPはエンタープライズレベルのアプリケーションでより悪化しますが、Web開発により柔軟性があります。 JavaScriptと比較して、PHPはバックエンド開発により簡潔ですが、フロントエンド開発のJavaScriptほど良くありません。
