ID: 33912
Comment by: terrafrost at gmail dot com
Reported By: awsewell at catawba dot edu
Status: Assigned
Bug Type: COM related
Operating System: Windows XP
PHP Version: 5CVS-2005-07-29
Assigned To: wez
New Comment:
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";
}
?>
Previous Comments:
------------------------------------------------------------------------
[2005-08-02 00:49:14] 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-07-28 23:41:02] awsewell at catawba dot edu
I tried the latest version via the link provided and get the same
results.
------------------------------------------------------------------------
[2005-07-28 23:34:47] [EMAIL PROTECTED]
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:30:55] 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."
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=33912&edit=1