使用PHP在Windows中获取文件所有者

使用PHP在Windows中获取文件所有者,php,Php,提供文件的路径,并在Windows上获取其所有者用户名 当然,fileowner在这里是无用的 有什么PECL扩展能帮上忙吗 编辑:同样有效的备选方案: 从.DOC文件中读取摘要数据,以检索作者 编辑2:使用COM(“word.application”)找到解决方案。还有其他的吗?您可以尝试解析系统调用,如System(“icacls$file”,$return_value),尽管它只在windows上工作,并且不是最干净的解决方案您可以通过跳转到命令行并对文件执行DIR/Q命令来完成这一点(对

提供文件的路径,并在Windows上获取其所有者用户名

当然,
fileowner
在这里是无用的

有什么PECL扩展能帮上忙吗

编辑:同样有效的备选方案:

从.DOC文件中读取摘要数据,以检索作者


编辑2:使用
COM(“word.application”)
找到解决方案。还有其他的吗?

您可以尝试解析系统调用,如System(“icacls$file”,$return_value),尽管它只在windows上工作,并且不是最干净的解决方案

您可以通过跳转到命令行并对文件执行DIR/Q命令来完成这一点(对于任何类型的文件):

$output = shell_exec('dir ' . $filepath . '/Q');

$output = explode(' ', $output);

foreach($output as $entry) {
    if(strtoupper($entry) == '{DOMAIN}\\' . strtoupper($loggedInUser)) {
        $owner = str_replace('{DOMAIN}\\', '', $entry);
    }
}
此函数仅在Windows系统中正常工作,而本机PHP函数
fileOwner
仅在linux系统中正常工作


在我工作的地方,我们有一个PHP扩展,它以某种方式通过单个函数调用提取这些信息,但我不知道它是如何工作的。

我只是找到了这个问题的解决方案。这是答案


请将您找到的解决方案作为此问题的答案发布,以便其他人受益。您不必将其标记为已解决,以鼓励其他人发布。此命令不会返回文件的所有者(尽管它可以设置它)。
$path = 'D:\Some File\Some Another File\document.doc'; // File or dir path
$su = new COM("ADsSecurityUtility"); // Call interface
$securityInfo = $su->GetSecurityDescriptor($path, 1, 1); // Call method
echo $securityInfo->owner; // Get file owner