<?php //http://technet.microsoft.com/en-us/library/ee176615.aspx header("Content-Type: text/plain"); $arrHeaders = array(284); //XP Only has 40 or so possible meta-data types $objShell = new COM("Shell.Application"); $objFolder = $objShell->Namespace('c:\\temp'); //Change to suit the proper path for ($i = 0; $i <= 283; $i = $i + 1) { $arrHeaders[$i] = $objFolder->GetDetailsOf($objFolder->Items, $i); } foreach ($objFolder->Items as $strFileName) { for ($i = 0; $i <= 283; $i = $i + 1) { echo $i . "\t" . $arrHeaders[$i] . ": " . $objFolder->GetDetailsOf($strFileName, $i) . "\r\n"; } }
foreach ($files as $fkey => $filel) { if ($fkey != 'sourceName') { $filelist = explode(";", $filel); foreach ($filelist as $file) { unset($output); $file = str_ireplace(array("%systemroot%", "%programfiles%"), array(getenv('SYSTEMROOT'), getenv('PROGRAMFILES')), $file); if (!is_file($file) and !is_file(getenv('SYSTEMROOT') . "\\system32\\" . $file)) { continue; } else { if (!is_file($file)) { $file = getenv('SYSTEMROOT') . "\\system32\\" . $file; } } // Use this info to see if file already exists in DB $mf_filename = substr(strrchr($file, "\\"), 1); $objFolder = $objShell->Namespace(substr($file, 0, strrpos($file, "\\"))); $fileVersion = $objFolder->GetDetailsOf($objFolder->ParseName($mf_filename), 156); $productVersion = $objFolder->GetDetailsOf($objFolder->ParseName($mf_filename), 271); $fileModified = date('Y-m-d H:i:s', strtotime($objFolder->GetDetailsOf($objFolder->ParseName($mf_filename), 3))); $fileCreated = date('Y-m-d H:i:s', strtotime($objFolder->GetDetailsOf($objFolder->ParseName($mf_filename), 4))); $file_hash = hash_file("md5", $file); $query = "\r\n\t\t\t\t\t\tselect\r\n\t\t\t\t\t\t\tmessageFileID\r\n\t\t\t\t\t\tfrom\r\n\t\t\t\t\t\t\tmessageFile\r\n\t\t\t\t\t\twhere\r\n\t\t\t\t\t\t\tfile = '" . $mf_filename . "'\r\n\t\t\t\t\t\t\tand fileVersion = '" . $fileVersion . "'\r\n\t\t\t\t\t\t\tand productVersion = '" . $productVersion . "'\r\n\t\t\t\t\t\t\tand fileModified = '" . $fileModified . "'\r\n\t\t\t\t\t\t\tand fileHash = '" . $file_hash . "';"; $result = $dbh->query($query)->fetch(); $messageFileID = $result['messageFileID']; // if file !exists use wrcinfo.exe to get messages if (empty($messageFileID)) { $insertQuery = "\r\n\t\t\t\t\t\t\tinsert into messageFile\r\n\t\t\t\t\t\t\t\t(file, fileVersion, productVersion, fileCreated, fileModified, createdDate, fileHash)\r\n\t\t\t\t\t\t\tvalues\r\n\t\t\t\t\t\t\t\t('" . $mf_filename . "','" . $fileVersion . "','" . $productVersion . "','" . $fileCreated . "','" . $fileModified . "','" . date('Y-m-d H:i:s', $runTimeEvent) . "','" . $file_hash . "');"; $dbh->exec($insertQuery); $result = $dbh->query($query)->fetch(); $messageFileID = $result['messageFileID']; exec("wrcinfo.exe \"" . $file . "\"", $output);