Makale numarası: 320081 - Bu makalenin geçerli olduğu ürünleri görün.
Bu makalede, NTFS dosya sistemi birimindeki bir dosya veya klasörü neden silemediğiniz ve bu soruna sebep olan farklı nedenleri nasıl belirleyeceğiniz anlatılmaktadır.
Not NTFS, kendi sistemindeki klasörleri özel bir dosya türü olarak nitelendirir. Bu nedenle, bu makalede "dosya" sözcüğü kullanıldığında, bu, bir dosya veya klasör olabilir.
Neden 1: Dosya, bir ACL kullanıyorErişim Denetim Listesi (ACL) kullanan bir dosyayı silemeyebilirsiniz. Bu soruna geçici bir çözüm bulmak için, dosya izinlerini değiştirin. İzinleri değiştirebilmeniz için, dosyaların sahipliğini almanız gerekebilir.
Yöneticiler, dosyalar için açıkça atanmış izinleri olmasa bile, diledikleri dosyanın sahipliğini almak için örtülü bir olanağa sahiptir. Dosya sahipleri, açıkça dosyaya atanmış bir izinleri olmasa bile, dosya izinlerini değiştirmek için örtülü bir olanağa sahiptir. Bu nedenle, bir dosyanın sahipliğini almanız, kendinize dosyayı silme izinlerini vermeniz ve sonra da dosyayı silmeniz gerekebilir.
Dosya, standart olmayan bir ACL'ye sahip olduğu için, belirli güvenlik araçlarını kullanarak dosya izinlerini görüntüleyemiyor veya değiştiremiyorsunuz.Bu soruna geçici bir çözüm bulmak için, başka bir araç (örneğin, Cacls.exe dosyasının sonraki bir yapısı) kullanın.
ACL'deki Erişim Denetim Girdileri (ACE), türlerine bağlı olarak, tercih edilen belirli bir sıraya sahiptir. Örneğin, erişimi reddeden ACE'ler, tipik olarak erişim atayan ACE'lerden önce gelir. Ancak, bir programın rasgele sıralı ACE'leri bulunan bir ACL yazması engellenemez. Windows'un bazı eski sürümlerinde, Microsoft Windows bu "standart dışı" ACL'leri okumaya çalışırken sorunlar oluşuyordu. Bazı durumlarda, bu ACL'leri, Microsoft Windows Gezgini grafik güvenlik düzenleyicisini kullanarak değiştiremezsiniz. Bu sorun, sonraki Windows sürümlerinde giderilmiştir. Bu sorunla karşılaştıysanız, Cacls.exe dosyasının en güncel sürümünü kullanın. Bir ACL'yi yerinde görüntüleyemeseniz veya düzenleyemeseniz bile, dosyaya erişebilmenizi sağlayan yeni bir ACL yazabilirsiniz.
Neden 2: Dosya kullanılıyorDosya o sırada kullanılmaktaysa, dosyayı silemeyebilirsiniz. Bu soruna geçici bir çözüm bulmak için, tanımlayıcısı açık olan işlemi belirleyin ve kapatın.
Dosyanın nasıl açıldığına bağlı olarak (örneğin, paylaşılan erişim yerine özel erişim için açılmış olabilir), kullanılmakta olan bir dosyayı silemeyebilirsiniz. Dosya tanımlayıcıları açık olan işlemleri dilediğiniz zaman belirleyebilmek amacıyla çeşitli araçlar kullanabilirsiniz.
Dosya tanımlayıcıları açık olan işlemlere yardımcı olan araçlar hakkında ek bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
242131
(http://support.microsoft.com/kb/242131/ )Nasıl yapılır: Açık Dosyaları Bulunan İşlemlerin Listesini Görüntüleme
172710Bu sorunun çeşitli belirtileri olabilir. Sil komutunu kullanarak bir dosyayı silebilirsiniz, ancak dosyayı açan işlem onu bırakıncaya kadar dosya gerçekte silinmez. Ayrıca, silme işlemini bekleten bir dosyanın Güvenlik iletişim kutusuna da erişemeyebilirsiniz. Bu soruna geçici bir çözüm bulmak için, tanımlayıcısı açık olan işlemi belirleyin ve kapatın.
(http://support.microsoft.com/kb/172710/ )Windows NT 4.0 Resource Kit'teki OH aracı nasıl kullanılır (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
Neden 3: Dosya sistemi arızası nedeniyle dosyaya erişilemiyorDosya sistemi bozuksa dosyaya erişemeyebilirsiniz. Bu soruna geçici bir çözüm bulmak için, disk biriminde Chkdsk yardımcı programını çalıştırıp hataları düzeltin.
Diskteki bozuk kesimler, diğer bozuk donanımlar veya yazılım hataları nedeniyle dosya sistemi bozulabilir ve dosyaları sorunlu bir duruma sokabilir. Tipik işlemler çeşitli biçimlerde başarısız olabilir. Dosya sistemi bozulmayı algıladığında, olay günlüğüne bir olay kaydeder ve Chkdsk yardımcı programını çalıştırmanızı isteyen bir ileti alırsınız. Bozulmanın niteliğine bağlı olarak, Chkdsk yardımcı programı, dosya verilerini kurtaramayabilir; ancak Chkdsk, dosya sistemini kendi içinde tutarlı bir duruma döndürür.
Chkdsk yardımcı programını kullanma hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleleri görüntülemek üzere aşağıdaki makale numaralarını tıklatın:
176646
(http://support.microsoft.com/kb/176646/ )Hata iletisi: Dosya veya dizin bozuk... (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
187941
(http://support.microsoft.com/kb/187941/ )CHKDSK yardımcı programı ile /C ve /I anahtarlarının açıklaması (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
Neden 4: Dosyalar MAX_PATH karakterden daha derin yollarda bulunuyorDosya yolunda sorunlar varsa bir dosyayı açamayabilir, düzenleyemeyebilir veya silemeyebilirsiniz.
Çözüm 1: Dosyaya erişmek için otomatik oluşturulan 8.3 adı kullanınBu soruna geçici bir çözüm bulmak için, otomatik oluşturulan 8.3 adı kullanarak dosyaya erişebilirsiniz. Bu geçici çözüm, klasör adları çok uzun olduğu için dosya yolu derinde olduğunda en kolay çözüm olabilir. 8.3 yol da çok uzunsa veya birimde 8.3 adlar devre dışı bırakılmışsa, çözüm 2'ye geçin.
NTFS birimlerinde 8.3 dosya adlarını devre dışı bırakma hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
121007
(http://support.microsoft.com/kb/121007/ )NTFS disk bölümlerinde 8.3 ad oluşturma nasıl devre dışı bırakılır (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
Çözüm 2: Derin klasörü yeniden adlandırın veya taşıyınMAX_PATH değerinden daha derindeki hedef dosyalar bulunmayacak biçimde klasörü yeniden adlandırın. Bunu yaparsanız, kök klasörden (veya başka bir güvenli konumdan) başlatın ve klasörleri daha kısa adlarla yeniden adlandırın. Bu adım sorununuzu gidermezse (örneğin, bir dosya 128 klasör alttaysa), Çözüm 4'e geçin.
Çözüm 3: Bir sürücüyü yol yapısındaki bir klasöre eşleyinBir sürücüyü, hedef dosya veya klasörün yol yapısındaki bir klasöre eşleyin. Bu yöntem, sanal yolu kısaltır.
Örneğin, aşağıdaki şekilde yapılandırılmış bir yolunuz olduğunu varsayalım:
\\SunucuAdı\AltKlasörAdı1\AltKlasörAdı2\AltKlasörAdı3\AltKlasörAdı4\...Bu yolda, toplam karakter sayısı 255 karakterden fazladır. Bu yolun uzunluğunu 73 karaktere indirmek için, AltKlasörAdı4 için bir sürücü eşleyin.
Çözüm 4: Klasörle aynı derinlikte olan bir ağ paylaşımı kullanınÇözüm 1, 2 ve 3 uygun değilse ya da sorunu gidermezse, klasör ağacıyla aynı derinlikte olan bir ağ paylaşımı oluşturun ve paylaşıma erişerek klasörleri yeniden adlandırın.
Çözüm 5: Derin yollara erişebilen bir araç kullanınBirçok Windows programı, en fazla yol uzunluğunun 255 karakterden daha kısa olmasını bekler. Bu nedenle, bu programlar bu tür tipik yolları işlemek için yalnızca yeterli iç depolamayı ayırır. NTFS'de bu sınırlama yoktur ve çok daha uzun yolları kullanabilir.
Aynı derecede derin olan klasör yapınızın bir noktasında bir paylaşım oluşturur ve paylaşımı kullanarak bu noktadan da derin bir yapı oluşturursanız, bu sorunla karşılaşabilirsiniz. Klasör ağacında yerel olan çalışan bazı araçlar, kökten başlayarak tüm ağaçta ilerleyemeyebilir. Bu araçları, paylaşıma erişebilecekleri özel bir biçimde kullanmanız gerekebilir. (CreateFile API belgesi, bu durumda tüm ağaçta ilerleme yöntemini anlatmaktadır.)
Tipik olarak, dosyaları, onları oluşturan yazılımları kullanarak yönetebilirsiniz. MAX_PATH değerinden daha derin dosyalar oluşturabilen bir programınız varsa, aynı programı kullanarak dosyaları silebilir veya yönetebilirsiniz. Bir paylaşımda oluşturulan dosyaları, aynı paylaşımı kullanarak silebilirsiniz.
Neden 5: Dosya adı, Win32 ad alanındaki bir ayrılmış adı içeriyorDosya adı Win32 ad alanındaki bir ayrılmış adı (örneğin, "lpt1") içeriyorsa, dosyayı silemeyebilirsiniz. Bu soruna geçici bir çözüm bulmak için, Win32 olmayan bir program kullanarak dosyayı yeniden adlandırın. Bir POSIX aracı veya dosyayı kullanmak için uygun iç sözdizimini kullanan başka bir araç kullanabilirsiniz.
Ayrıca, dosya yolunu belirtmek için belirli bir sözdizimi kullanıyorsanız, tipik Win32 ayrılmış ad denetimlerini atlamak için bazı yerleşik komutları da kullanabilirsiniz. Örneğin, Windows XP'de Del komutunu kullanırsanız, aşağıdaki özel sözdiziminin tam yolunu belirlediğinizde "lpt1" adlı bir dosyayı silebilirsiniz:
del \\?\c:\dosya_yolu\lpt1Windows NT ve Windows 2000 altındaki ayrılmış adlara sahip dosyaları silme hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
120716Windows XP altındaki ayrılmış adlara sahip dosyaları silme hakkında ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
(http://support.microsoft.com/kb/120716/ )Windows'ta ayrılmış adlara sahip olan dosyalar nasıl kaldırılır (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
315226Bir dosya tanımlayıcısını, tipik Win32 CreateFile düzeneğini kullanarak açarsanız, belirli dosya adları eski stil DOS aygıtları için ayrılır. Geri uyumluluk için, bu dosya adlarına izin verilmez ve tipik Win32 dosya çağrıları kullanılarak bu adla dosyalar oluşturulamaz. Ancak, bu sorun bir NTFS kısıtlaması değildir.
(http://support.microsoft.com/kb/315226/ )Windows XP'de ayrılmış adlara sahip olan dosyalar nasıl kaldırılır (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir.)
Bir dosya oluşturulurken gerçekleştirilen tipik ad denetimlerini, MAX_PATH değerinden daha derindeki klasörlere erişmek için kullandığınız tekniği kullanan bir Win32 programıyla atlayabilirsiniz. Ayrıca, bazı POSIX araçlarında bu ad denetimleri yapılmaz.
Neden 6: Dosya adı Win32 ad alanında geçersiz bir ad içeriyorDosya adı geçersiz bir ad ise (örneğin, dosya adında bir boşluk veya nokta varsa ya da yalnızca boşluktan oluşuyorsa), dosyayı silemeyebilirsiniz. Bu soruna geçici bir çözüm bulmak üzere, dosyayı silmek için uygun iç sözdizimini kullanan bir araç kullanın. Bazı araçlarla "\\?\" sözdizimini kullanarak, bu dosyalar üzerinde işlem yapabilirsiniz; örneğin:
del "\\?\c:\adında_boşluk_bulunan_dosyanın_yolu.txt "Bu sorunun nedeni, Neden 4'e benzemektedir. Ancak, boşluk veya nokta içeren bir ada sahip olan dosyayı açmak için tipik Win32 sözdizimini kullanırsanız, dosya açılmadan önce, içerdiği boşluklar veya noktalar kaldırılır. Bu nedenle, aynı klasörde "BirDosya.txt" ve "BirDosya.txt " (dosya adındaki boşluğa dikkat edin) adlı iki dosyanız varsa, ikinci dosyayı standart Win32 çağrıları kullanarak açmaya çalıştığınızda, onun yerine ilk dosya açılır. Aynı şekilde, adı yalnızca " " (bir boşluk karakteri) olan bir dosyanız varsa ve bu dosyayı standart Win32 çağrılarını kullanarak açmaya çalışırsanız, onun yerine dosyanın üst klasörü açılır. Bu durumda, bu dosyaların güvenlik ayarlarını değiştirmeye çalışırsanız, bunu ya hiç yapamaz ya da istemeden başka dosyaların izinlerini değiştirirsiniz. Bu durumda, gerçekte kısıtlayıcı bir ACL'ye sahip olan dosyaya izinleriniz olduğunu düşünebilirsiniz.
Birkaç farklı nedenBazı durumlarda, bu nedenlerden birkaçı birden geçerlidir ve bu da dosyayı silme işlemini çok daha karmaşık hale getirir. Örneğin, bilgisayarın yöneticisi olarak oturum açarsanız, Neden 1 (dosyayı silme izniniz yok) ve Neden 5'in (dosya adı, erişimin farklı veya var olmayan bir dosyaya yönlendirilmesine neden olan bir karakter içeriyor) bir bileşimi nedeniyle dosyayı silemeyebilirsiniz. Dosyanın sahipliğini alıp izinler eklemek yoluyla Neden 1'e geçici bir çözüm bulmaya çalışırsanız, kullanıcı arabirimindeki ACL düzenleyicisi Neden 6 yüzünden uygun dosyaya erişemediği için dosyayı yine de silemeyebilirsiniz.
Bu durumda, Subinacl yardımcı programını /onlyfile anahtarıyla kullanıp (bu yardımcı program Kaynak Kiti'nde bulunmaktadır), normalde kabul edilmeyen dosya sahipliğini ve izinlerini değiştirebilirsiniz; örneğin:
subinacl /onlyfile "\\?\c:\soruna_neden_olan_dosyanın_yolu" /setowner=etki_alanı\yönetici /grant=etki_alanı\yönetici=FNot Bu komut, tek bir komut satırıdır ve okunaklı olması için bu şekilde yazılmıştır.
Bu komut satırı örneği, soruna neden olan karakteri içeren C:\soruna_neden_olan_dosyanın_yolu dosyasını değiştirerek, etki_alanı\yönetici hesabının dosya sahibi olmasını ve bu hesabın dosya üzerinde tam denetime sahip olmasını sağlar. Bu dosyayı, aynı "\\?\" sözdizimiyle Del komutunu kullanarak silebilirsiniz.
Makale numarası: 320081 - Last Review: 7 Haziran 2013 Cuma - Gözden geçirme: 7.4
Bu makaledeki bilginin uygulandığı durum: