> 백엔드 개발 > PHP 튜토리얼 > PHP 마스터 | PHP로 Windows 레지스트리에 액세스하십시오

PHP 마스터 | PHP로 Windows 레지스트리에 액세스하십시오

Jennifer Aniston
풀어 주다: 2025-02-25 10:09:10
원래의
473명이 탐색했습니다.

PHP 마스터 | PHP로 Windows 레지스트리에 액세스하십시오 키 테이크 아웃

구성 정보를 저장하는 계층 구조화 된 데이터베이스 인 Windows Registry는 Win32Std Extension을 사용하여 PHP를 사용하여 액세스 할 수 있으며, 이는 다운로드에서 사전 컴파일 된 라이브러리로 다운로드 할 수 있습니다. Windows 레지스트리는 키로 알려진 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 레지스트리는 웹 기반 애플리케이션에 대한 구성 정보 저장, 응용 프로그램 데이터 저장 및 데스크탑 응용 프로그램에 대한 사용자 기본 설정 또는 USB Dongle과 같은 하드웨어 장치의 존재를 확인하는 것과 같은 실제 애플리케이션에 사용할 수 있습니다. 그러나 시스템 작동에 영향을 줄 수 있으므로 레지스트리를 수정해야합니다. 아침에 깨어나서“오늘 미친 짓을하고 싶니?”라고 스스로 생각한 적이 있습니까? 글쎄, 오늘이 그 아침 중 하나라면 운이 좋다. PHP를 사용하여 Windows 레지스트리에 액세스하는 데 약간의 소개를 드리겠습니다. PHP… 레지스트리… 미친! Windows 레지스트리는 단순히 Windows 운영 체제 및 기타 응용 프로그램이 중요한 구성 정보를 저장하는 계층 적으로 구조화 된 데이터베이스입니다. 모든 종류의 데이터는 레지스트리에 저장됩니다 : 사용자 프로파일, 파일 유형 연결, 하드웨어 정보, 일련 번호 등. Win32Std 확장에서 제공되는 기능을 사용하면 Windows 기반 PHP 응용 프로그램에서도 레지스트리에 액세스 할 수 있습니다. Win32std 확장자는 downloads.php.net/pierre/에서 사전 컴파일 된 라이브러리로 다운로드 할 수 있습니다. PHP의 EXT 폴더에 삭제하고 php.ini 파일을 업데이트 한 다음 필요한 경우 Apache를 다시 시작하십시오. 현재 다운로드 할 DLL은 32 비트이므로 64 비트의 Wampserver를 사용하는 경우에는 큰 성공을 거두지 못할 것입니다. Wampserver를 32 비트 빌드로 다운 그레이드하거나 라이브러리를 직접 컴파일해야합니다. 레지스트리 레이아웃 레지스트리는 Windows 운영 체제에서 어둡고 위험하며 무서운 곳으로 명성을 얻었습니다. 이것은 과장된 두려움 일지 모르지만 여전히 Microsoft의 레지스트리 Mantra를 반복 할 것입니다.“레지스트리를 수정하기 전에 백업을하고 문제가 발생하면 복원하는 방법을 이해해야합니다. 부적절한 변화는 심각한 문제를 일으켜 운영 체제를 다시 설치해야 할 수 있습니다.” 그렇다면이 어둡고 무서운 곳은 어떻게 생겼습니까? Windows 레지스트리는 키로 알려진 5 개의 주요 그룹으로 나뉩니다. hkey_current_config

이 키는 모니터 해상도 및 스피커 설정과 같은 컴퓨터의 하드웨어에 대한 정보를 저장합니다. 이 키가 HKCC로 약칭 될 수 있습니다. hkey_local_machine

이 키에는 프린터, 소프트웨어 및 네트워킹 정보와 같은 기계에 대한 구성 정보가 포함되어 있습니다. 키가 먼저로드 된 다음 사용자의 프로필에서 항목이 다양한 값을 무시합니다. 이 키가 HKLM으로 약칭되는 것을 볼 수 있습니다. hkey_users 이 키는 컴퓨터의 로컬 사용자 계정에 대한 모든 프로필을 보유합니다. 사용자의 스크린 세이버 선택, 테마 정보 및 기타 환경 설정과 같은 것들이 여기에 저장됩니다. 이 키는 HKU로 약칭됩니다. hkey_classes_root
이 키는 파일 연결 및 MIME 유형에 대한 정보를 저장하는 HKEY_LOCAL_MACHINESOFTWARE를 가리키는 별칭입니다. 약어는 HKCR입니다. hkey_current_user 이 키는 현재 로그인 한 사용자에 대한 hkey_users의 프로필을 가리키는 별칭입니다. 이 키가 HKCU로 약칭되는 것을 볼 수 있습니다. 각 키에는 하위 키가 포함되어 있으며 다른 하위 키, 구성 값 또는 둘 다가 포함됩니다. HKEY_CURRENT_USER에서 작업하면 몇 개의 CLI 스크립트와 샌드 박스를 가지고 놀 수 있습니다. 시스템 전체 애플리케이션 데이터 및 Microsoft의 보안 권한을 편안하게 작업하는 상황에 대해서만 HKEY_LOCAL_MACHINE 만 사용하십시오. 상황에 맞는 것이 무엇인지 이해하고, 어떤 계정 PHP가 실행되는지 알고 있으며 키를 적절하게 만듭니다. 샌드 박스 만들기 특히 개발중인 안전을 위해 스크립트에 사용할 특별한 키를 설정하는 것이 좋습니다. 오류는 인간이며 실수로 중요한 것을 덮어 쓰고 싶지 않습니다. 조직은 지정된 키를 설정하는 또 다른 이유입니다. 레지스트리에 많은 정보가 저장되어 있으며 우리는 자신의 가치를 쉽게 찾을 수 있기를 원합니다. 레지스트리 편집기는 레지스트리를보고 편집하는 데 사용되는 Microsoft 프로그램입니다. 샌드 박스를 만들려면 시작으로 이동하여 검색 창에 "regedit"을 입력하고 나타나는 결과 목록에서 regedit.exe를 선택하십시오. 왼쪽 창은 기존 키의 트리 구조를 보여주고 오른쪽 창은 그 안에 저장된 값을 보여줍니다. hkey_current_user 노드를 확장하고 소프트웨어 키를 마우스 오른쪽 버튼으로 클릭하고 팝업 컨텍스트 메뉴에서 새> 키를 선택하십시오. 또는 화살표 키를 사용하여 트리를 통과하여 소프트웨어 키가 강조 표시되고 편집 메뉴에서 새> 키를 선택할 수도 있습니다. 키 이름을 제공하고 Enter를 누릅니다.

이제 우리는 플레이 할 장소가 있었으므로 Win32Std가 레지스트리 항목을 조작하기 위해 제공하는 기능을 소개 할 수 있습니다. 레지스트리 에서 읽는다 reg_open_key () 함수는 레지스트리에 대한 연결을 열고 리소스를 반환합니다. 그런 다음이 리소스는 다른 레지스트리 기능과 함께 사용하여 해당 연결에 사용됩니다. reg_close_key () 함수는 연결을 닫습니다. reg_open_key ()는 두 가지 인수를 취합니다. 먼저 5 개의 1 차 레지스트리 그룹 중 하나를 나타내는 사전 정의 된 상수, 나머지 나머지 경로는 원하는 키로 향합니다.

연결이 열려 있으므로 Reg_enum_key (), reg_enum_value () 및 reg_get_value () 함수를 사용하여 레지스트리에서 정보를 검색 할 수 있습니다. 리소스 만 reg_enum_key ()로 전달되면 현재 키에 따라 하위 키 배열을 반환합니다. 정수 값을 전달하여 특정 인덱스에서 서브 키를 검색 할 수도 있습니다.

reg_enum_key ()가 키를 반환 할 때 reg_enum_value ()는 키 값을 반환합니다. 이 함수는 리소스와 선택적 인덱스를 허용합니다. 값 이름은 reg_get_value ()로 전달되어 값의 값을 검색 할 수 있습니다 (입이 아닙니다!).
<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>
로그인 후 복사
로그인 후 복사
로그인 후 복사
레지스트리에 쓰기 // retrieve an array of subkeys under the current key $subkeys = reg_enum_key($reg); foreach ($subkeys as $index => $subkey) { echo "The subkey at " . $index . " is " . $subkey . "n"; } // retrieve a specific subkey $index = 2; $subkey = reg_enum_key($reg, $index); echo "The subkey at " . $index . " is " . $subkey . "n"; 레지스트리를 읽고 쓸 때 선택할 수있는 소수의 데이터 유형이 있습니다. 일반적으로 PHP의 역동적 인 특성으로 인해 거의 결과가 거의 없지만 값을 작성할 때 유형을 지정해야합니다. 대부분의 경우 reg_sz 또는 reg_dword를 사용하지만 확장자에 노출 된 데이터 유형 목록은 다음과 같습니다.
<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>
로그인 후 복사
reg_dword-값은 32 비트 길이의 정수 로 저장됩니다. reg_sz-값은 고정 길이 문자열

로 저장됩니다

reg_expand_sz-값은 변수 길이 문자열 로 저장됩니다 reg_multi_sz - 값은 공간 또는 쉼표와 같은 구분 기자로 분리 된 항목 목록입니다. reg_binary - 값은 바이너리 문자열 입니다 reg_set_value () 함수는 레지스트리에 값을 쓰는 데 사용됩니다. 값이 이미 존재하면 새 값이 덮어 쓰지 않지만 존재하지 않으면이를 생성합니다. 이 함수는 4 가지 인수를 취합니다. 먼저 열린 리소스, 값의 이름, 값의 데이터 유형을 나타내는 사전 정의 된 상수와 마지막으로 데이터 자체를 나타냅니다.

<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 드라이브 동글 레지스트리 작업에 실질적인 용도가 있는지 궁금 할 것입니다. 웹 기반 애플리케이션에서는 구성 정보를 레지스트리에 저장할 수 있습니다. 데스크탑 응용 프로그램을 작성한 경우 레지스트리는 모든 종류의 정보를 응용 프로그램 데이터에서 사용자 기본 설정으로 저장하기에 좋은 장소가 될 수 있습니다. Windows 자체는 모든 종류의 흥미로운 하드웨어 및 상태 관련 정보를 레지스트리에 작성하며, 일부는 창의적이라면 유용 할 수 있습니다. 우리의 PHP 응용 프로그램이 USB 동글을 서버에 첨부하여 실행 해야하는 방식으로 라이센스가 부여되었다고 가정합니다. PHP는 어떻게 동글의 존재를 감지 할 수 있습니까? Windows의 답변은 레지스트리에 있습니다! 각 장치에는 고유 식별자가 있으므로 스크립트는 동굴이 연결되어 있는지 여부를 결정하기 위해 시동시 식별자의 적절한 키를 검색 할 수 있습니다. 첫 번째 단계는 장치의 식별자를 결정하는 것입니다. 이 예에서는 상품 썸 드라이브를 사용합니다. 컴퓨터의 USB 포트에 드라이브를 연결 한 다음 시작으로 이동하여 검색 창에 "장치"를 입력 한 다음 나타나는 결과 목록에서 장치 관리자를 선택하십시오. 장치 관리자에서 장치를 찾고 항목을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 속성을 선택하십시오. 그런 다음 속성 창의 세부 사항 탭으로 이동하여 드롭 다운 목록에서 "장치 인스턴스 경로"를 선택하십시오. 값의 끝을 향한 16 진수의 순서는 장치 ID (빨간색으로 표시)입니다.

Windows는 HKEY_LOCAL_MACHINESYSTEMCURRENTCONTROLSETSERVICES의 다양한 하위 키에 USB 장치의 존재를 기록합니다. 내 썸 드라이브와 같은 스토리지 미디어는 Usbstor 아래에 나타납니다. 다른 장치는 Usbaudio, Usbccgp 및 Usbehci에 나타날 수 있습니다. 또한 HKEY_LOCAL_MACHINE은 권한있는 계정 만 접근 할 수 있습니다. 이제 장치 인스턴스에 대한 키의 열거 하위 키를 간단히 검색 할 수 있습니다. 드라이브가 첨부되면 등록되며 첨부되지 않으면 나열되지 않습니다.
<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>
로그인 후 복사
로그인 후 복사
로그인 후 복사
이 간단한 수표는 또한 다른 흥미로운 가능성을 열어줍니다. Dongle을 확인하는 민감한 관리자 전용 인터페이스를 쉽게 코딩 할 수 있으며 $ _server [ "remote_addr"]를 확인하여 요청이 서버 자체에서 전송됩니다. 이 설정을 사용하려면 사용자가 지정된 서버 에 물리적으로 물리적 인 인증을 제공해야합니다. 결론에서

이 기사에서 우리는 Windows 레지스트리의 내용과 그 정보를 찾을 수있는 정보의 작은 샘플을 보았습니다. 자신의 구성 데이터를 작성하거나 Win32Std 확장자가 제공하는 기능을 사용하여 정보를 읽을 수 있습니다. 그건 그렇고, Win32Std 확장자는 레지스트리에 대한 액세스 이상을 제공합니다. 관심이 있으시면 Wildphp.free.fr/wiki/doku.php?id=win32std:index를 확인하여 다른 것이 무엇인지 확인하십시오. Fotolia를 통한 이미지 php 에서 Windows 레지스트리에 액세스하는 것에 대한 자주 묻는 질문 (FAQ) PHP에서 Windows 레지스트리에 액세스 할 수 있습니까? PHP에서 COM 클래스를 사용하여 PHP에서 Windows 레지스트리에 액세스 할 수 있습니다. 이 클래스를 사용하면 PHP가 Windows 레지스트리를 포함한 COM 객체와 상호 작용할 수 있습니다. COM 클래스의 새 인스턴스를 작성한 다음 Recread 메소드를 사용하여 레지스트리에서 값을 읽을 수 있습니다. 그러나이 방법은 레지스트리에 액세스하기 위해 올바른 권한이 필요합니다. Windows 레지스트리는 무엇이며 PHP에서 액세스 해야하는 이유는 무엇입니까?

Windows 레지스트리는 데이터베이스입니다. 이는 운영 체제 및 레지스트리를 사용하기로 선택한 응용 프로그램에 대해 낮은 수준의 설정을 저장합니다. 시스템 정보를 검색하거나 특정 소프트웨어가 있는지 확인하거나 시스템 설정을 수정하는 등 다양한 이유로 PHP에서 액세스해야 할 수도 있습니다. 그러나 시스템 작동에 영향을 줄 수 있으므로 레지스트리를 수정해야합니다. PHP에서 Windows 레지스트리에 쓸 수 있습니까? COM 클래스의 regwrite 메소드를 사용하는 PHP. 그러나 잘못된 수정으로 인해 운영 체제를 다시 설치 해야하는 심각한 문제가 발생할 수 있으므로 이는 매우주의를 기울여야합니다. PHP에서 Windows 레지스트리에 액세스하는 데 필요한 권한은 무엇입니까?

PHP의 Windows 레지스트리에 액세스하려면 관리 권한이 있어야합니다. 레지스트리에 중요한 시스템 및 응용 프로그램 설정이 포함되어 있기 때문입니다. 웹 서버에서 스크립트를 실행하는 경우 서버의 사용자 계정에 필요한 권한도 있어야합니다.

Windows 레지스트리의 구조는 무엇입니까?

Windows 레지스트리는 다음과 같습니다. 열쇠와 값을 가진 나무로 계층 적으로 조직되었습니다. 키는 폴더와 유사하며 값은 키 내의 데이터 항목입니다. 각 키에는 하위 키가 포함될 수 있으며 각 하위 키에는 트리 구조를 형성하는 추가 하위 키가 포함될 수 있습니다.

PHP에서 Windows 레지스트리에 액세스 할 때 오류를 처리 할 수있는 방법은 무엇입니까? PHP, 표준 PHP 오류 처리 기능을 사용하여 오류를 처리 할 수 ​​있습니다. 예를 들어, set_error_handler 함수를 사용하여 사용자 정의 오류 핸들러를 정의 할 수 있습니다.

비 창 시스템에서 PHP에서 Windows 레지스트리에 액세스 할 수 있습니까? 비 창 시스템의 PHP의 레지스트리. Windows Registry는 Windows 운영 체제와 관련된 기능입니다.

PHP의 COM 클래스 란 무엇입니까?

PHP의 COM 클래스는 PHP가 상호 작용할 수있는 내장 클래스입니다. com 객체. Com (Component Object Model)은 Microsoft가 도입 한 소프트웨어 구성 요소의 이진 인터페이스 표준입니다. PHP는 Windows 레지스트리를 포함하여 모든 COM 객체와 상호 작용할 수 있습니다.

Php를 사용하여 Windows 레지스트리에서 키를 삭제할 수 있습니까? . COM 클래스의 regdelete 메소드를 사용하여 수행 할 수 있습니다. 그러나 잘못된 키를 삭제하면 심각한 문제가 발생할 수 있으므로 이는 극도로주의를 기울여야합니다. Windows 레지스트리를 수정하는 위험은 무엇입니까?

Windows 레지스트리 수정 위험은 위험을 수정합니다. 잘못된 수정으로 인해 운영 체제를 다시 설치 해야하는 심각한 문제가 발생할 수 있습니다. 따라서 변경하기 전에 레지스트리를 백업하고 현재하고있는 일에 대해 확신이있는 경우에만 변경하는 것이 좋습니다.

위 내용은 PHP 마스터 | PHP로 Windows 레지스트리에 액세스하십시오의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿