2009-04-02 4 views
0

PHP를 사용하여 새 레지스트리 값을 만드는 방법은 무엇입니까?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); 

이미 HKEY_LOCAL_MACHINE\SOFTWARE 내부 7-ZIP라는 키가있다.

apache/logs 내부의 error.log 항목이 없습니다.

받는 사람 : Tomalak 어떻게하면 이러한 사용 권한/ID를 수정할 수 있습니까? PHP로 할 수있는 방법이 있습니까?

무엇을하려고합니까? MySql 및 PHP와 번들되는 Adobe AIR 응용 프로그램이 있습니다. 이 응용 프로그램이 컴퓨터에 설치되면 컴퓨터에 대한 정보를 레지스트리에 넣으므로 응용 프로그램이 실행될 때마다 해적판이 아닌지 확인할 수 있습니다.

+0

어떤 방법으로 실패 않습니다 그 빛에서

는이 같은 함수가 리팩토링을 제안? 접근 불가? – Tomalak

+0

error.log 파일의 내용을 apache log 폴더에 게시하십시오. –

답변

1

기본 권한/ID를 수정하지 않으면 웹 서버 프로세스 (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; 
} 
+0

나는 당신이 심지어 try 블록에서 RegRead를 할 수 있다고 생각하고, 키가 존재하지 않는다면 예외를 리턴 할 것이라고 생각한다. –

+0

RegRead는 주석 처리되었으므로 코드에 포함시키지 않았습니다. 이 함수가 true를 반환하면 모든 것이 잘 진행되었습니다. 방금 작성한 값을 읽을 필요가 없습니다. – Tomalak

+0

어떻게 해당 권한/ID를 수정합니까? PHP로 할 수있는 방법이 있습니까? – dharm0us