Получить владельца файла в Windows, используя PHP - PullRequest
3 голосов
/ 05 декабря 2011

Укажите путь к файлу и получите имя его владельца в Windows?

Конечно, fileowner здесь бесполезен.

Какие-нибудь расширения PECL, которые могут помочь?

Редактировать: Альтернатива, которая также будет работать:

Считать сводные данные из файла .DOC, чтобы получить автора.

Редактировать 2: Нашел решение, используя COM("word.application"). Есть другие?

Ответы [ 3 ]

1 голос
/ 13 ноября 2014

Вы можете сделать это (для любого файла любого типа), выделив командную строку и выполнив команду 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, которое каким-то образом извлекает эту информацию с помощью одного вызова функции, но я понятия не имею, как оно работает.

1 голос
/ 05 декабря 2011

Вы можете попробовать выполнить системный вызов, например, System ("icacls $ file", $ return_value), хотя это работает только в Windows и не является самым чистым решением

0 голосов
/ 05 июня 2019

Я просто нахожу решение этой проблемы. Вот ответ https://stackoverflow.com/a/56458656/2592415

$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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...