php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #33912 Crash when trying to access registry using com
Submitted: 2005-07-28 23:30 UTC Modified: 2006-12-17 01:00 UTC
Votes:6
Avg. Score:4.3 ± 0.9
Reproduced:2 of 3 (66.7%)
Same Version:2 (100.0%)
Same OS:0 (0.0%)
From: awsewell at catawba dot edu Assigned: wez (profile)
Status: No Feedback Package: COM related
PHP Version: 5CVS-2005-07-29 OS: Windows XP
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: awsewell at catawba dot edu
New email:
PHP Version: OS:

 

 [2005-07-28 23:30 UTC] awsewell at catawba dot edu
Description:
------------
When trying to use php 5.04 to access the registry with the code below PHP crashes.

Reproduce code:
---------------
<?php
    $hostname = ".";
    $keyPath = "\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
    $wshShell = new COM("winmgmts:{impersonationLevel=impersonate}//{$hostname}/root/default:StdRegProv");
    $wshShell->EnumKey("HKEY_LOCAL_MACHINE", $keyPath, $keys);
    foreach($keys as $key){
        print $key;
    }
    unset($wshShell);
?>

Expected result:
----------------
I execpt to see the list of subkeys from the registry.

Actual result:
--------------
PHP crashes with only "CLI has encountered a problem and needs to close.  We are sorry for the inconvenience."

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-07-28 23:34 UTC] tony2001@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-07-28 23:41 UTC] awsewell at catawba dot edu
I tried the latest version via the link provided and get the same results.
 [2005-08-02 00:49 UTC] terrafrost at gmail dot com
EnumKey's first variable isn't supposed to be a string - it's supposed to be an int.  The number representing HKEY_LOCAL_MACHINE is 0x80000002.

Check out the following link for more information:

http://msdn.microsoft.com/library/en-us/wmisdk/wmi/enumkey_method_in_class_stdregprov.asp

That said, even when "HKEY_LOCAL_MACHINE" is replaced with 0x80000002 in awsewell's code, the code still doesn't work as it should.  The problem would seem to be due to arrays not being passed by reference.  I say that because in vBScript, they do seem to be (just check out the examples in the link I provided).
 [2005-08-02 15:29 UTC] terrafrost at gmail dot com
Doesn't seem to work on the latest beta of PHP5, but it works on PHP4...

<?php
    define('HKEY_LOCAL_MACHINE',0x80000002);
    $keys = new VARIANT('', VT_ARRAY);
   $hostname = ".";
    $keyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
    $wshShell = new COM("winmgmts:{impersonationLevel=impersonate}//{$hostname}/root/default:StdRegProv");
    $wshShell->EnumKey(HKEY_LOCAL_MACHINE, $keyPath, &$keys);
    $keys = $keys->value;
    foreach($keys as $key){
        print "$key\n";
    }
?>
 [2006-12-09 11:01 UTC] rrichards@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5.2-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5.2-win32-latest.zip

Does it still crash?

use following script for correct output. See inline comments for changes:

<?php
define('HKEY_LOCAL_MACHINE',0x80000002);
/* passing VT_ARRAY arg - see bug #39596 */
$keys = new VARIANT(array());
$hostname = ".";
$keyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall";
$wshShell = new COM("winmgmts:{impersonationLevel=impersonate}//{$hostname}/root/default:StdRegProv");
$wshShell->EnumKey(HKEY_LOCAL_MACHINE, $keyPath, &$keys);
/* COM in PHP 5 does not use the value property like in PHP 4 so use $keys directly */
foreach($keys as $key){
    print "$key\n";
}
?>
 [2006-12-17 01:00 UTC] php-bugs at lists dot php dot net
No feedback was provided for this bug for over a week, so it is
being suspended automatically. If you are able to provide the
information that was originally requested, please do so and change
the status of the bug back to "Open".
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sun Dec 22 01:01:30 2024 UTC