29.08.2025

Paylaşılan klasöre veri eklensin ama klasör silinemesin

Ağ üzerindeki bir Windows sunucumuz var. Sunucunun adı sunucu1 olsun. Bu sunucu üzerinde D: sürücüsündeki Ortak klasörü paylaşılmış olsun. Ağdaki bilgisayarlardan \\sunucu1\ortak şeklinde giriş mümkün. Bu klasöre ulaşmak isteyen kullanıcıların grubu da muhasebe olsun. Grup yerel veya etki alanı seviyesinde oluşturulmuş olabilir. Sunucunun bu grubu görüyor olması yeterli.

İki farklı seviye yekilendirme var. Birincisi paylaşım yetkileri. Buraya muhasebe grubu için Read+Change (oku ve değiştir) yetkileri vermemiz gerek. Full control (tam denetim) vermekten kaçınıyorum, genel olarak.

İkinci yetki dosya sistemindeki NTFS yetkileri. D:\ortak\muhasebe klasörünün özelliklerinden yetki vermem gerek. Muhasebe klasörünün silinmesini veya adının değiştirilmesini istemiyorum. Ama bu klasörün içinde yeni dosyalar ve klasörler oluşturulabilmesini, var olanların düzenlenebilmesini istiyorum. Bu iki farklı yetkiyi verebilmem için muhasebe klasörünün özelliklerinden Güvenlik sekmesine gelmeli, gelişmiş butonuna basarak gelişmiş güvenlik ayarları penceresini açmalıyım. Buraya muhasebe grubu için 2 farklı yetki vermem gerek.

İlk olarak Ekle butonuna basarak yeni bir izin girdisi sayfasını açıyorum. Sorumlu seçin bağlantısını tıklayarak muhasebe grubunu yazıyorum. Tür olarak "İzin ver" seçili kalacak. Ama Uygulandığı öğe olarak "Sadece bu klasör (this folder only)" seçilmeli. Aşağıda bazı ayarlar seçili gelecek. Ama bunlar yetmez, sağda bulunan "Gelişmiş izinleri göster" bağlantısını tıklayarak daha ayrıntılı yetkileri listelemeliyim. Daha sonra aşağıdaki yetkilerin kutuları işaretlenmeli. Yanında "+" işareti olmayanlar varsayılan seçili gelecek. "+" olanları işaretlemeliyim.

  Klasörü gez / dosya çalıştır        # Traverse folder / execute file
Klasörü listele / veri oku        # List folder / read data
Öznitelikleri oku            # Read attributes
Genişletilmiş öznitelikleri oku     # Read extended attributes
İzinleri oku                # Read permissions
+ Dosya oluştur / veri yaz        # + Create files / write data
+ Klasör oluştur / veri ekle        # + Create folders / append data

Tamama basarak bu girişi onayladıktan sonra önceki adımı bir kez daha tekrarlayıp, yine muhasebe grubunu seçip bu sefer Uygulandığı öğe seçeneğini "Sadece alt klasörler ve dosyalar (Subfolders and files only)" seçmeliyim. Sonrasında yine "Gelişmiş izinleri göster" bağlantısını tıklamalı ve seçimimin aşağıdakileri içerdiğinden emin olmalıyım.

  Klasörü gez / dosya çalıştır        # Traverse folder / execute file
Klasörü listele / veri oku        # List folder / read data
Öznitelikleri oku            # Read attributes
Genişletilmiş öznitelikleri oku     # Read extended attributes
+ Dosya oluştur / veri yaz        # + Create files / write data
+ Klasör oluştur / veri ekle        # + Create folders / append data
+ Öznitelikleri yaz            # + Write attributes
+ Genişletilmiş öznitelikleri yaz   # + Write extended attributes
+ Sil                    # + Delete
+ Altkalsörleri ve dosyaları sil    # + Delete subfolders and files
İzinleri oku                # Read permissions

Buna da tamam diyerek onayladıktan sonra 2 kez daha tamamı seçerek tüm pencereleri kapatabilirim. Bu adımdan sonra muhasebe grubu üyelerinin \\sunucu1\ortak\muhasebe klasörü üzerinde dosya ve klasör ekleme ile mevcut dosyaları düzenleme yetkisi olacak ama muhasebe klasörünü değiştirme ve silme yetkileri olmayacak.

28.08.2025

Aşağı kaydırılamayan sayfalar

Bazen internette araştırdığım bir konu ile ilgili girdiğim sayfalarda çok değerli makaleyi okurken önüme birden bir "ödeme duvarı" (paywall) çıkıyor. Ödeme duvarı bir div tagı şeklinde içeriğin üzerinde yer alıyor. Tarayıcıların denetle/izle seçeneği ile DOM ayarlarına gidip bu div'i silebiliyorum ama altında yer alan içeriği kaydıramıyorum. Dolayısıyla tarayıcıma kadar gelmiş yazıyı okuyamıyorum.

Bu duruma bir çözüm buldum. Sayfanın DOM yapısında olması gereken dikey kaydırma çubuğu yok. Bunu çıkarmak için F12 ile geliştirici araçlarına (developer tools) gelerek konsol bölümüne aşağıdakini yazdığımda kaydırma çubuğu görüntüleniyor ve içeriğe ulaşabiliyorum.

document.body.style.overflow="auto"

Alternatif olarak

document.body.style.overflowY="scroll"

İleri seviye olarak

window.onwheel = null;
window.onscroll = null;
document.onwheel = null;

denenebilir. Ve hatta

document.body.style.height = 'auto';
document.body.style.position = 'static';
document.documentElement.style.height = 'auto';

Benim durumumda ilki sonuç verdi, ama gelecekte daha ileri farklı yöntemler ile karşılaşılabilir.

İçerik bir ödeme alınmadan ulaşılamayacaksa tarayıcıma kadar gelmemeli.

12.08.2025

Uzak bir makinede Process Monitor ile veri toplamak

Uzak bir bilgisayarda bazı sorun giderme verilerine ihtiyacım var. Konsoluna bağlıysam bunu zaten grafik arayüzde Process Monitor (procmon) kullanarak yapıyorum. Ama uzaktaki bir bilgisayara sadece terminalden bağlıyken nasıl yaparım?

İlk koşul procmon'a sahip olmak. Bugün için ~3 MB boyutunda bir sıkıştırılmış dosyayı indirmem gerek. Her derde deva. Bir aralar "When in dubt, run procmon" gibi bir sloganı bile vardı (bkz. David Solomon). procmon64.exe'ün uzak bilgisayarın D:\procmon klasöründe olduğunu varsayıyorum.

Uzak bilgisayara eski yöntem psexec ya da yeni yöntem Enter-PSSession ile bağlanıp, ya da Invoke-Command ile aşağıdaki gibi bir komut çalıştırarak işe başlayabiliriz.

Invoke-Command -ComputerName UZAKPC -ScriptBlock {
    Start-Process
        -FilePath "D:\procmon\Procmon64.exe"
        -ArgumentList "/Quiet /minimized /AcceptEula /backingFile D:\procmon\analiz.pml"
}

Bu komut ile karşı tarafta procmon veri toplamaya başladı. procmon'un uzak bilgisayarda ilk defa çalıştığını varsayarak /AcceptEula'yı da ekledim. Birden fazla çalıştırıldığında gerek yok.

Yeteri kadar veri topladığımıza inandığımız bir anda veri toplama sürecini aşağıdaki gibi bir komutla durdurabiliriz.

Invoke-Command -ComputerName UZAKPC -ScriptBlock {
    Start-Process
        -FilePath "D:\procmon\Procmon64.exe"
        -ArgumentList "/Terminate"
}

Daha sistematik ve uzun süreli veri toplama ihtiyacı için Sysmon da kullanılabilir, ama bu seferlik ihtiyacım Process Monitor.

 

8.08.2025

Sayfanın yüklenme zamanı

Şöyle bir amacım var: Web tarayıcım bir süredir açık. Mevcut sayfa kendini yenilememiş. Sayfada yükleme anında çekilmiş bazı veriler var ama ne zamana ait olduğuna dair bir veri yok. Bunu bulmanın bir yolu var mı?

Evet. F12 ile geliştirici araçlarına geçip konsola gelip oraya

performance.timing

yazınca navigationStart, redirectStart, fetchStart, domainLookupStart, connectStart, vs bir sürü zaman etiketi (timestamp) çıkıyor. Bu zaman etiketlerini milisaniye cinsinden. Bunları

(Get-Date "1970-01-01").AddMilliSeconds(1754546232722)

gibi bir komutla (Powershell) tarih ve zamana çevirebilirim. Ama bu UTC olacak. Yerel saate çevirmek için (Türkiye için +3 saat) AddHours(3) eklemeliyim.

(Get-Date "1970-01-01").AddMilliSeconds(1754546232722).AddHours(3)

Ya da geliştirici araçlarının konsoluna

new Date(performance.timing.navigationStart)

yazmam gerek.

7.08.2025

OSDATA dosyası ile BSoD

Şu X hesabından duyurulan ve ThioJoe kanalındaki video ile de işlenen konuya göre, basit bir dosya oluşturarak Windows'un kalıcı olarak mavi ekran vermesine sebep olabiliyoruz.

Yapılması gereken tek şey, %windir%\System32\config klasörünün altında OSDATA isimli bir dosya oluşturmak ve içine rastgele birkaç karakter yazmak. Dosya içeriği boş olunca aynı etkiyi yapmıyor, dosya içinde az da olsa veri olmalı (boş olan dosya işletim sistemi tarafından dolduruluyor).

Boş bir klasör oluşturmak da aynı etkiyi yapıyor. Bundan sonra bilgisayarı tekrar başlatınca bilgisayar sonsuz bir mavi ekran (BSoD) döngüsüne giriyor. Ancak rastgele içeriğe sahip bir dosya ile ulaşılan mavi ekranda hata kodu BAD SYSTEM CONFIG INFO olurken, boş bir klasör ile ulaşılan durumda hata kodu CONFIG LIST FAILED oluyor.

Kurtulmak için dosyayı silmek gerek; evet. Ama silmek için bilgisayarı önce kurtarma kipinde açmak gerek. 2 kere aynı hata ile düzgün başlayamayınca Windows hata düzeltme kipine girerek gelişmiş seçeneklerle açmayı öneriyor. Burada aşağıdaki ekranda

Advanced options (geçişmiş seçenekler) tıklandıktan sonra Troubleshoot > Advanced Options > Command Prompt seçilerek kurtarma kipine girilmeli. Burada ilk yapılması gereken normal şartlarda C: olarak kullanılan disk bölümünü bulmak. Burada bu çok belirgin olmayabiliyor. diskpart'a girip list volume komudunu kullanarak alışkın olduğumuz boyutlardaki sürücüyü bulup, sonrasında DOS komutları ile, örneğin E: sürücüsüne geçip, ilgili klasöre gelmek ve dosyayı (ya da klasörü) silmek gerek:

E:
cd \Windows\System32\config
del OSDATA

ya da klasör için

rmdir OSDATA


25.07.2025

Windows Update takibi

Yerel bilgisayarda Windows Update hizmeti hangi güncellemeleri yüklüyor bulmak kolay. Bunu uzaktaki bir bilgisayar için nasıl yapabiliriz? Windows Update session nesnesinin henüz indirmediği ve gizli olmayan güncellemeleri sorgulayarak olabilir:

Invoke-Command -ComputerName UZAKPC -ScriptBlock {
    $Session = New-Object -ComObject Microsoft.Update.Session
    $Searcher = $Session.CreateUpdateSearcher()
    $Searcher.Online = $true
    $Results = $Searcher.Search("IsInstalled=0 and IsHidden=0")

    $Results.Updates | ForEach-Object {
        [PSCustomObject]@{
            Title       = $_.Title
            Downloaded  = $_.IsDownloaded
            Installed   = $_.IsInstalled
            EULAAccepted= $_.EulaAccepted
        }
    }
} | Format-Table Title, Downloaded, Installed, EULAAccepted -AutoSize -Wrap

Ya da PSWindowsUpdate modülünü kurup, powershell'i yönetici olarak açtıktan sonra

Get-WUList -Computername UZAKPC

diyerek de yapabiliriz. Ama uzaktaki bir bilgisayar için her seferinde yönetici hakları ile yeni bir pencere açmamak için ilk yöntem daha iyi sanki. Sonrasında yeniden başlatmaya gerek olup olmadığını öğrenmek için şu yöntem kullanılabilir.


23.06.2025

SysineternalsSuite paketinin boyutu

Sysinternals'ın Microsoft'tan önce de var olduğunu hatırlayan ve geliştirdiği araçları kullanan biri olarak Process Explorer, Process Monitor ve benzeri (o zamanlar isimler farklıydı, birleşmemiş tekil araçlar vardı) araçların güncel sürümlerini takip ediyorum. Paketlerin tümüne ihtiyaç duyanlar için "Suite" adı verilen bir zip dosyası yayınlanıyor sitede (indirme bağlantıları hala https://www.sysinternals.com/ sistesine yönleniyor). Her aracın yeni sürümü ile birlikte Suite de güncelleniyor.

Bu sysinternals suite paketlerinin boyutları, her bir aracın yeni sürümlerinin çıkışıyla birlikte yavaş bir artış eğilimindeydi. Artışın hızı hakkında bir fikir vermek amacıyla boyut geçtiğimiz dönemde şöyle gerçekleşti:

TarihBoyut
22 Kasım 202351.803 KB
27 Ağustos 202451.656 KB
28 Şubat 202551.813 KB
20 Haziran 2025170.127 KB

Görüldüğü gibi son indirmede boyut 52 MB seviyesinden 170 MB seviyesine çıkmış. Ne tür yeni araçlar pakete eklenmiş ya da mevcut araçlara ne tür yeni özellikler kazandırılmış olabilir diye bakmak için hemen 170 MB'lık paketin zip dosyasını bir yere genişlettim ama ciddi farklar göremedim. Ayrıntılı olarak incelemek için bir önceki paket ile en yeni paketin içeriklerini karşılaştırmak istedim. Basit bir içerik taramasında gördüm ki 28 Şubat'taki sürüm ile 20 Haziran'daki sürüm arasında tek fark RDCMan.exe aracıyla ilgili. Dosyanın 2.93.1431 sürümli 1.858 KB boyutundaki eski sürümünün yerine 3.1.0 sürümlü 67.050 KB boyutundaki sürümünün gelmiş. Buna ilave olarak bir de x86 sistemler için aynı sürüm numarasına sahip 62.232 KB boyutundaki RDCMan-x86.exe pakete eklenmiş.

Bütün fark bundan.