Windows üzerinde PHP kullanarak paylaşılan sürücülerin listesini getir?

3 Cevap php

Ben Windows çalıştıran benim sisteme bağlı paylaşılan sürücülerin listesini görüntülemek istiyorum. Bunun için herhangi bir öğretici var mı?

Ben PHP aşağıdaki kodu denedim:

echo "<select id = 'drives'><option>Drives</option>";
for ($ii=66;$ii<92;$ii++) 
{
    $char = chr($ii);
    if (opendir($char.":/"))
        echo "<option>".$char."</option>";
}
echo "</select>";

3 Cevap

Siz PHP deneysel Win32 API işlevleri kullanmak zorunda:

  1. API işlevi GetDriveType kullanarak kayıt w32api-register-function.
  2. Bundan sonra w32api-invoke-function kullanarak veya doğrudan GetDriveType arayarak ya bu fonksiyonu çağırabilirsiniz. Bu PHP sürümüne bağlıdır. (Belgeleme altındaki kullanıcı katkıda nota bakın w32api-invoke-function!)
  3. Bu ise dönüş değerini kontrol edin DRIVE_REMOTE. Sen MSDN belgelerine gerekli parametreleri ve diğer dönüş değerleri listesini bulabilirsiniz GetDriveType.

This may help to do it under c#. http://www.codeproject.com/KB/IP/networkshares.aspx I can't find any way to do it directly under php.

Lütfen php ile bu kullanmak için bir dll olarak bu yapmak ve Win32 API fonksiyonlarını kullanarak php onu aramak gerekebilir.

Sen üzerinden Windows paylaşılan kaynakları numaralandırabilir PHP's COM API:

$wmi = new COM('WinMgmts:{impersonationLevel=impersonate}!root/cimv2');
$result = $wmi->ExecQuery('Select Path from Win32_Share where Type = 0');
foreach ($result as $share) {
    echo $share->Path, PHP_EOL;
}

Çıktı makinedeki tüm paylaşılan klasörleri listeler. Tip 0 bir disk sürücüsü.

Win32_Share ek özellikler sizin için sorgulayabilirsiniz için MSDN belgelerine bakın.

Note: Eğer Mapped Network Drives arıyorsanız, sorguyu değiştirin

Select ProviderName From Win32_LogicalDisk Where DriveType = 4

ve değişim $share->Path için $share->ProviderName

Ayrıntılar için bu Technet Article bakın.


COM kullanarak alternatif wmic komutunu kullanmak olacaktır:

exec('wmic Share where Type=0 get Path', $shares);
print_r($shares);

Yukarıdaki ilk örnek eşdeğerdir. WMIC, bakın hakkında daha fazla bilgi için