15.10.2024

Sysinternals handle

Birçok Sysinternals aracının içinde en az kullandığım olabilir, handle. Çünkü daha çok process explorer içinden aynı işi yapıyordum. Son zamanlarda daha fazla handle kullanmaya başladım.

İşletim sistemleri, uygulamaların dosya sistemi, portlar vs gibi kaynaklar üzerinde kullandıkları kaynakları bir kimlik numarası (buna handle denir, sanıyorum Türkçe'ye tutamaç/kulp gibi çevrilebilecek ama teknik olarak işleç olarak ifade edilen bir terim) ile takip eder. Bir dosya bir uygulama tarafından açıldığında, aynı anda bu dosyaya ihtiyaç duyabilecek başka programlarında dosyaya yazıp bozmaması için bu dosyayı kilitler ve ikinci gelene "bu dosya abc programı tarafından kullanılıyor" diye bir mesaj görüntüler. Çoğu zaman çok faydalı olan bu işleyiş bazen sorunlara yol açabilir. Dosyayı normal yollardan açan uygulama beklenmedik bir şekilde sonlanırsa ona ayrılan erişim yetkisi hiç sonlanmamış olabilir ve diğer uygulamaların (hatta tekrar başlatılan uygulamanın kendisinin) o dosyaya erişimi engellenebilir.

Böyle durumlarda bir "aracı"nın müdahale etmesi gerekebilir. İşte handle, bu amaçla açık kalan erişimleri sorgulamaya ve sonlandırmaya yarayan küçük ama faydalı bir uygulamadır. handle ve handle64 olarak 2 farklı mimari için sürümleri mevcuttur. 2024'ün sonlarına doğru artık 32-bitlik sistemler görmek pek mümkün değil, ama 32-bitlik sürüm olan handle.exe'yi, bütün 32-bitlik uygulamalar gibi 64-bitlik bir Windows'da çalıştırmak mümkün. Lakin bazı dezavantajları olur; sadece 32-bitlik süreçlerin açtığı dosyaları sorgulayabilmek, sadece 32-bitlik süreçlerin erişebileceği 4 GB bellek adres alanına erişebilmesi gibi. Bu sebeple sadece 64-bitlik sürümü kullanıyorum.

Genellikle yükseltilmiş ayrıcalıklar ile çalışmayı sever, bu arkadaş. Bu sebeple açtığım terminal penceresinin yükseltilmiş ayrıcalıklara sahip olduğunu varsayıyorum. Tek başına çalıştırınca her süreç için açık kaynakların işleçlerini tek tek listeler. Bu çoğu zaman yapmamamız gereken bir şey. Onun yerine hedefimiz hakkında biraz daha bilgi vermek gerek. Örneğin, işleci (handle) oluşturan uygulamanın adı, süreç numarası veya erişimde sorun yaşadığımız dosyanın adı veya yolu olabilir.

handle64 winword
handle64 -p 11483
handle64 C:\Users\metin\Documents\Liste.docx

Bunların sonucunda bir veya birkaç tane işleç listelenir. Bu işleçlerin bir veya daha fazlasını kapatmak için ise hem işleç numarasını (-c ile) hem de süreç numarasını (-p ile) kullanmak gerekir.

handle64 -c 22AC -p 11483

Bu gibi araçlar eski günlerde daha çok USB belleklerin "çıkarılamaması" gibi sorunların çözümü için işe yarardı.

Tabi henüz geçerliliğini kaybetmemiş bir sürece ait işlev(ler)i zorla kapatmak en azından sürecin artık ilgili kaynağa erişememesine, bazen veri kaybına hatta sistem süreçlerine ait işleçlerin kapatılması durumunda sistem kararsızlığına (mavi ekranlar, beklenmedik sonlanmalar vs) sebep olabilir.

Hiç yorum yok: